Il 23/08/21 09:54, Miriam ha scritto:
> Buongiorno a tutti,
> aggiungo qualche altra informazione dato che in azienda stiamo valutando 
> l'impatto di questa situazione sui nostri fogli di calcolo.
> 
> 1) un problema estremamente simile era stato segnalato anche su ASK
> https://ask.libreoffice.org/t/strani-decimali-in-una-sottrazione-calc/47815
> in questo caso l'arrotondamento non era visibile nella cella (che non era 
> stata allargata) ma nella barra di stato (cosa che accade anche con gli 
> esempi di cui stiamo discutendo)
> 
> 2) l'utente che aveva posto da domanda ha giustamente sollevato un problema 
> *potenzialmente molto più grave*:
> Se il risultato approssimato viene utilizzato in un confronto logico si 
> ottiene False in situazioni in cui invece si dovrebbe ottenere True. Capite 
> che può essere un grosso problema risolvibile solo utilizzando formule di 
> confronto molto più complesse di quelle standard. Su ask c'è anche un file di 
> esempio.
> 
> 3) se, come stanno sostenendo alcuni, l'approssimazione è normale ed è stata 
> introdotta volontariamente, allora sarebbe interessante spiegare perché non 
> succede se i valori coinvolti hanno un solo decimale: 12,5-12 da sempre 0,5 
> esatto senza approssimazione.
> 
> M.G.
> 
> --
> 
> Sent: Sunday, August 22, 2021 at 5:59 PM
> From: "Miriam" <[email protected]>
> To: [email protected]
> Subject: Re: [it-users] errore Calc
> Piccolo aggiornamento:
> Ho riscontrato il bug nella 7.1.0.3 (come scritto sopra) ma anche nelle 
> versioni 6.4.2.2 e 5.4.7.2 e nella versione online (quella fornita da GMX). 
> Il bug invece NON è presente nella versione 4.4.7.2
> (ho usato queste versioni perché ne avevo una copia d'archivio)
> 
> 

Buongiorno,

1) un conto è la rappresentazione che si vede nella cella, che dipende
da come questa è formattata e dalle impostazioni indicate nelle opzioni,
un altro conto è il valore che il computer ha in memoria e che per molti
numeri decimali (non tutti) può essere un'approsimazione (con differenze
infinitesime, ma pur sempre un'approsimazione)

2) il problema si risolve con un arrotondamento ai due decimali, non
servono formule molto complesse, basta un =ARROTONDA(A1-A2;2), nel caso
 posto inizialmente da Francesca sarebbe =ARROTONDA(241,47-241;2).
Capisco che ragionando in base 10 possa sembrare strano arrotondare il
risultato di una sottrazione, cosa che verrebbe più naturale da fare ad
esempio con una divisione.
Inoltre per la stragrande maggioranza dei calcoli la differenza è così
piccola, che basta formattare le celle con i soli decimali che servono e
non ci si accorge nemmeno del problema.

3) l'approssimazione è normale, ma NON è stata introdotta
volontariamente, semplicemente lavorando in base 2 e con un determinato
numero di bit a disposizione è inevitabile, così come in base 10 è
inevitabile che la rappresentazione di 1/3 sia 0,3333 con il 3
periodico. Ogni decimale che viene aggiunto avvicina l'approssimazione
all'effettivo valore di 1/3, ma non sarà mai lo stesso, seppure per una
differenza microscopica.
Per puro caso nel tuo esempio hai usato lo 0,5, che è un valore decimale
rappresentabile esattamente sia in base 10, sia in base 2.

Il problema è trattato in maniera abbastanza chiara in questa pagina del
tutorial che parla del linguaggio di programmazione Python
https://pytutorial-it.readthedocs.io/it/python3.9/floatingpoint.html

Anche in questo documento si precisa che non è un bug di Python e che il
problema riguarda anche gli altri linguaggi di programmazione.
Allo stesso modo Calc condivide il problema con gli altri fogli
elettronici. Ognuno dei quali poi a video rappresenta il numero come
meglio crede, lasciando o meno all'utente la scelta delle impostazioni
predefinite, ma di fondo, indipendentemente da ciò che viene mostrato,
il valore in memoria è comunque approssimato.


-- 
Marco Marega

-- 
Come cancellarsi: E-mail [email protected]
Problemi? https://it.libreoffice.org/supporto/mailing-lists/come-cancellarsi/
Linee guida per postare + altro: 
https://wiki.documentfoundation.org/Local_Mailing_Lists/it
Archivio della lista: https://listarchives.libreoffice.org/it/users/
Privacy Policy: https://www.documentfoundation.org/privacy

Rispondere a