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


Bonjour,

C'est un problème fort connu depuis des décennies.
Un lien vers une vidéo sur le sujet, et même plus. Il faut quand même être un peu matheux ! Pourquoi_mon_ordinateur_calcule_faux <https://www.canal-u.tv/video/inria/pourquoi_mon_ordinateur_calcule_faux.6629>
Voir notamment à 12:27.
On peut aussi se référer à la norme IEEE 754 sur l'arithmétique à virgule flottante. Enfin un excellent exposé sur les nombres flottants et les processeurs de nos ordinateurs Nombres flottants et processeurs <https://guy-grave.developpez.com/tutoriels/hardware/nombres-flottants-processeurs/>
Cordialement
Patrick

Le 20/11/2019 à 10:22, Jean-Baptiste Faure a écrit :
Bonjour,

Le 19/11/2019 à 11:02, Totoro a écrit :
Bonjour,

Je suis sous Ubuntu 18.04, avec LibreOffice 6.3.3.2, problème constaté
également sur 14.04, avec LibrOffice 5.4

Lorsqu'on fait dans une cellule =1,8-1,7 par exemple, on a bien 0,1
mais si on augment le nombre de décimale visible, et qu'on passe de 15 à 16 ce n'est plus égale à 0,1, mais: 0,0999999999999999 et qu'en on passe à 17
décimale 0,09999999999999990


C'est normal, cela tient au fait que les calculs sur ordinateur sont faits en base 2 et non dans le système décimal qui n'est utilisé que pour l'affichage. Dans la machine les nombres sont représentés en utilisant seulement 2 chiffres 0 et 1 : 0, 1, 10, 11, 100, 101, etc. pour les premiers nombres entiers.

En base 2 on ne peut pas représenter 0,1 avec un nombre fini de décimales, de la même façon qu'en base 10 on ne peut pas représenter 1/3 avec un nombre fini de décimales.

L'opération 1,8-1,7 consiste donc à réaliser les opérations suivantes :
1/ convertir 1,8 dans la représentation interne de la machine
2/ convertir 1,7 dans la représentation interne de la machine
3/ faire la soustraction des 2 représentations internes
4/ convertir le résultat en base 10
À la fin le résultat ne tombe pas juste.

On pourrait faire les calculs en base 10 mais ce serait beaucoup plus coûteux car il faudrait utiliser des algorithmes analogues à ceux qu'on emploie quand on fait les opérations à la main. Sur une calculette ce coût est négligeable car on ne fait pas beaucoup d'opérations, mais dans un tableur ou dans le domaine du calcul scientifique ce n'est pas envisageable actuellement.

Enfin bref, problème non reproduit sous une 6.1 sous Windows 7

Vraiment ? Je suis dubitatif.
Le Windows 7 en question, c'est un 32 bits ou un 64 bits ?


Bug ?

Non, juste une limitation propre à l'arithmétique particulière des ordinateurs.
https://fr.wikipedia.org/wiki/Virgule_flottante

Bonne journée
JBF



--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour vous désinscrire
Les archives de la liste sont disponibles à https://listarchives.libreoffice.org/fr/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.