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


Risposta ineccepibile che condivido in pieno, anche perché le mie basi
'ingegneristiche' sono alquante solide. Il computer non lavora su base
integer ma su base variabile in virgola mobile e di conseguenza esegue
il troncamento sulla base del numero dei decimali con relativo
arrotondamento a seconda che l'ultima cifra sia minore di 5 (per
difetto)  o superiore a 5 (per eccesso). Perché <5 arrotonda per
difetto? le cifre sono 0,1,2,3,4 ovvero cinque come quelle per eccesso
5,6,7,8,9. Esempio 0,4699 diventa 0,47 ma 0,46444 diventa 0,46. Se fosse
0,464608 il risultato sarebbe 0,47. eseguendo gli arrotondamenti
dall'ultima cifra con 3 decimali sarebbe 0,465 con due 0,47. Fatta la
prova col solito esempio impostando 3 cifre decimali e il risultato è
0,470 perché il 0,469 arrotonda l'ultima cifra a 0 e la seconda a 7.
Quando rimane 0,46(9)? Quando l'ultima cifra decimale è <5. A spanne
direi con 15 cifre decimali, come qualcuno ha scritto. con un numero
inferiore il risultato è sempre 0,47(0), proprio per effetto
dell'arrotondamento dell'ultima cifra.

La prova di excel dimostra che ha come standard 2 cifre decimali, mentre
LO bisogna dichiararle nelle opzioni oppure settarle nella formattazione
celle.

Il 21/08/21 17:22, Andrea Celli ha scritto:
Francesca, non conosco la tua formazione matematica, ma anch'io ne ho una
'piuttosto solida'.
Matematicamente 0,47 e 0,46(9) sono due rappresentazioni decimali esatte
dello stesso identico numero, a cui potremmo aggiungere anche 0,47(0) .
Per convincersene basta applicare la classica formula che dà esattamente la
frazione generatrice, 47/100.

Da un punto di vista "ingegneristico" il computer per eseguire i calcoli
opera in base 2 e poi li rende in base 10.
Per i cambi di base  esegue dei calcoli che portano ad un risultato del
tipo 0,46999999999999999...
Concordo con te che sarebbe più elegante se desse il risultato arrotondato,
anziché troncato.
Però non lo trovo così grave.

Per inciso, ho provato ad usare* Excel*. Per default scrive il risultato
con due cifre, e si otitene 0,47.
Però, se aumento il numero delle cifre  viene fuori un bel
*0,4699999990000000* (non ricordo il numero esatto di 9 e di 0).

In ogni caso, Calc è  più preciso di Excel perché gli zeri fasulli (questi
sì sono errori) compaiono più avanti.

Andrea



Il giorno sab 21 ago 2021 alle ore 14:30 Valerio Messina <efa@iol.it> ha
scritto:

On 8/21/21 10:35 AM, Gabriele Bertolucci wrote:
non è classificabile come bug ed è un comportamento presente in tutti i
fogli di calcolo
posso citare tre fogli di calcolo che non sbagliano quella semplice
sottrazione:

Excel
OpenOffice
Google Sheet

--
Valerio

--
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


-- 
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.