Visualizzazione incoerente dei valori numerici in Excel 2007 contro il file XML sottostante
-
28-10-2019 - |
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?
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.