Date: prev next · Thread: first prev next last
2021 Archives by date, by thread · List index


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" <tsubaki@gmx.com>
To: users@it.libreoffice.org
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 users+unsubscribe@it.libreoffice.org
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

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.