Forum Informatica Libera

Versione completa: Errore di arrotondamento in LibreOffice Calc
Al momento stai visualizzando i contenuti in una versione ridotta. Visualizza la versione completa e formattata.
Diversi utenti stanno segnalando uno strano errore di arrotondamento in LibreOffice Calc.
Se in una cella si esegue, ad esempio, l'operazione 241,47-241 e poi si aumenta la larghezza della cella il risultato anziché 0,47 diviene 0,469999999999999.

Se ne sta discutendo nella mailing list degli utenti italiani dove trovate anche altri esempi e valutazioni.

In attesa di saperne di più, tenetene conto se utilizzate LibreOffice Calc per eseguire calcoli ad alta precisione (nei calcoli ordinari non fa sostanzialmente nessuna differenza).
Ciao

Se scegliamo di formattare la cella con formato standard da quel risultato ma se noi impostiamo la terza voce il risultato sarà esatto. allegato 1 Standard [attachment=1445]

allegato 2(specificando i decimali).[attachment=1446]

Se vogliamo possiamo considerarlo un errore ma sarebbe più corretto quando creiamo un foglio di calcolo formattarlo prima di iniziare a lavorare specificando che si sta lavorando con decimali.
Sì, sono scenari di cui si è parlato anche nella discussione che ho segnalato.
Ma nessun altro foglio di calcolo si comporta così. E' chiaro che forzando l'arrotondamento il risultato è corretto ma è una procedura in gran parte superflua proprio perché il dato di default di un foglio di calcolo è un numero reale.
Strano se il numero è da 1 a 9 il risultato è corretto
5,47-5 da 0,47
se invece è uguale a 10 o superiore da errori diversi.
10,47-10 da 0,470000000000.......
100,47-100 da 0,46999999999....
Tutto normale con celle standard ma se la larghezza della cella supera i 3,1 cm da questi risultati strani.
succede solo se i decimali sono più di 1(0,15,0,47 ecc) e prevedono un risultato 0,(zero virgola).
se facciamo
10,4-10 da 0,4 corretto
10,47-10 da il risultato già visto sopra
Bene anzi male... ma saperlo può aiutare a superare il problema.
Quindi con i numeri minori di 10 si comporta in maniera ancora diversa... strano davvero
Non c'è nulla di strano, il risultato fornito da LibreOffice è corretto in base alle regole delle operazioni in virgola mobile.
Il numeoro 0,47, risultato dell'operazione 241,47-241 non si può rappresentare in modo esatto usando l'aritmetica binaria in doppia precisione a 64 bit
Inserite per esempio in questa pagina il valore 0.47: https://www.h-schmidt.net/FloatConverter/IEEE754.html

Per maggiori info vedere qui: https://docs.oracle.com/cd/E19957-01/806...dberg.html

Per inciso, più i numeri decimali si avvicinano allo zero, maggiore è la precisione con cui è possibile rappresentarli, tuttavia la conversione dipende dal numero e dall'operazione che viene svolta. Tanto per dirne una, il numero 0,1 in aritmetica binaria è un numero perodico...
invece 0,125 (1/8) non lo è perché si può esprimenre come 2^(-3) ossia una potenza intera di 2

Probabilmente in applicativi diversi da LibreOffice vengono adottati metodi che rilevano questa condizione e fanno direttamente un arrotondamento.
Come dice bat non c'è nulla di strano e non è un bug: anche Excel ha lo stesso comportamento.

[Immagine: HZBVyag.png]
(23/08/2021, 12:40)BAT Ha scritto: [ -> ]Non c'è nulla di strano, il risultato fornito da LibreOffice è corretto in base alle regole delle operazioni in virgola mobile.
BAT, mi fido completamente di ciò che dici ma...
Se una calcolatrice da 5 euro non ha questo problema... Se una calcolatrice software freeware fa quella operazione senza fare una piega... a ma sembra assurdo che un foglio di calcolo non sia in grado di fare altrettanto.

(23/08/2021, 15:27)dead Ha scritto: [ -> ]Come dice bat non c'è nulla di strano e non è un bug: anche Excel ha lo stesso comportamento.

Non è la stessa cosa. In Excel (ma anche in OpenOffice) devi essere tu a forzare il livello di precisione per ottenere quella forma.
(24/08/2021, 13:57)Blackstar Ha scritto: [ -> ]Se una calcolatrice da 5 euro non ha questo problema... Se una calcolatrice software freeware fa quella operazione senza fare una piega... a ma sembra assurdo che un foglio di calcolo non sia in grado di fare altrettanto.
il punto è che tecnicamente non è un bug ma il normale risultato di una operazione in virgola mobile a doppia precisione, in termini terra-terra, è quelle che esce così com'è dal registro della CPU dove viene immagazzinato il risultato del calcolo.
Ci sono tecniche per aggiustarla questa cosa, vedrai che presto o tardi la implementeranno