Domande frequenti - Calc: problema di precisione
TDF LibreOffice Document Liberation Project Blog comunitari Weblate Nextcloud Redmine Ask LibreOffice Donazione
Problema di precisione intrinseco
Calc, proprio come la maggior parte degli altri software per fogli di calcolo, utilizza le funzionalità matematiche in virgola mobile disponibili sull'hardware. Dato che la maggior parte dell'hardware contemporaneo utilizza l'aritmetica binaria in virgola mobile con precisione limitata definita in IEEE 754, molti numeri decimali, incluso il semplice 0,1, non possono essere rappresentati con precisione in Calc (che utilizza internamente numeri a doppia precisione a 64 bit). I calcoli con quei numeri comportano necessariamente errori di arrotondamento e questi si accumulano ad ogni calcolo. Questo non è un bug, ma è previsto e attualmente inevitabile senza l'utilizzo di calcoli complessi nel software, che comporterebbe penalizzazioni inadeguate delle prestazioni, e quindi è fuori discussione. Gli utenti devono tenerne conto e utilizzare arrotondamenti e confronti con epsilon, se necessario.
Un esempio:
A | |
---|---|
1 | 31000.99 |
2 | 32000.12 |
3 | =A1-A2 |
Ciò risulterà in -999,129999999997 in A3, invece del previsto -999,13 (potrebbe essere necessario aumentare le posizioni decimali mostrate nel formato cella per vederlo).
Ordine di grandezza tra gli operandi
L'ordine di grandezza massimo tra gli operandi è inferiore a 10^15 (1015). Questo non è correlato al formato di visualizzazione della cella.
Ad esempio, quando eseguite 1E+9 + 1E-7 potreste non ottenere il risultato che vi aspettate, poiché 9 - (-7) = 16 > 15. D'altra parte, eseguire 1E+8 + 1E-6 risulterà effettivamente in 100000000.000001 (potreste dover aumentare le cifre decimali mostrate nel formato cella per vederlo).