Domanda

Sto tentando di leggere un file Excel 2007 (XLSX) dall'esterno di Excel e sto trovando un'incoerenza che non posso spiegare.

Se si inserisce il valore di 19,99 in una cella e quindi guarda il documento XML sottostante, è effettivamente memorizzato come 19.9899999999998. Questo non è l'unico valore che lo fa, ma è un esempio ragionevole. Non viene applicata alcuna formattazione nel foglio. Nel mio esempio apro appena una nuova cartella di lavoro, digio il 19,99 in A1 e salvo il file.

Ho tentato di aprire questo semplice esempio in Open Office e Google Documenti e mostra 19,99 quando il documento viene caricato.

La mia domanda è: come determinare quando trasformare questo valore da 19.989999999998 in 19,99 per l'uso in altri sistemi?

È stato utile?

Soluzione

La variazione tra il 19.99 che sei entrato e il 19.989999999998 memorizzata è la variazione del punto galleggiante ... in genere ci sarà sempre una leggera discrepanza tra la rappresentazione binaria di un galleggiante (usato internamente da Excel) e il decimale usato per il display (e lo stoccaggio in il file XLSX).

Anche se non hai esplicitamente assegnato un formato alle celle, Excel applica una formattazione predefinita di "@" o "generale", che in genere (per numerici) viene visualizzato a 2dp, applicando scientifico se necessario. Se guardi la formattazione dei numeri per quella cella (sia che si usi Excel Front-End o esaminando il file XLSX), dovresti scoprire che è effettivamente impostato sul valore predefinito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top