La situation que tu décris où on a besoin d'arithmétique exacte ou d'arithmétique de position est celle de la comptabilité, des inventaires, etc. mais parfois en finance on fait aussi du calcul scientifique [1] dans certains contextes. Une règle de décision simple pour orienter son jugement – en l'absence de connaissances plus sûres – est qu'en gros si on a besoin de l'exponentielle ou qu'on travaille sur des mesures physiques il faut utiliser les flottants autrement ce n'est probablement pas le bon choix. (Exponentielle et apparentés, donc logarithmes, fonctions trigo, puissances fractionnaires, etc.)
Le calcul en virgule flottante est particulièrement bien présenté dans le livre de Knuth (Art of Computer Programming) mais il ne va pas dans le domaine "horror story" si ma mémoire est exacte.
Ceci dit j'ai déjà vu un logiciel de gestion de personnel (soit Staff squared ou Personio) qui me laissait avec 17.97 jours de congé, ce qui m'a presque fait pleurer de rire – et très perplexe parcequ'il faut beaucoup d'imagination pour trouver une explication à une erreur si grosse.
On peut certainement construire des exemples "taillés pour" dans le cadre de la comptabilité personnelle mais c'est peut-être plus satisfaisant de changer de contexte pour voir le problème. Si on prend par exemple une banque ou une chambre de compensation (un organisme interbancaire) on se retrouve avec:
un très grand nombre de transactions à équilibrer;
un grand nombre de "chemins de calcul" à cause du nombre de partenaires qui "font le même calcul en face."
Ce sont les ingrédients idéaux pour voir apparaître des erreurs d'arrondi en virgule flottante.
# Le point clef est le calcul scientifique, pas la finance
Posté par Michaël (site web personnel) . En réponse au journal SQL Decimal vs Double. Évalué à 3. Dernière modification le 12 septembre 2017 à 08:58.
La situation que tu décris où on a besoin d'arithmétique exacte ou d'arithmétique de position est celle de la comptabilité, des inventaires, etc. mais parfois en finance on fait aussi du calcul scientifique [1] dans certains contextes. Une règle de décision simple pour orienter son jugement – en l'absence de connaissances plus sûres – est qu'en gros si on a besoin de l'exponentielle ou qu'on travaille sur des mesures physiques il faut utiliser les flottants autrement ce n'est probablement pas le bon choix. (Exponentielle et apparentés, donc logarithmes, fonctions trigo, puissances fractionnaires, etc.)
Le calcul en virgule flottante est particulièrement bien présenté dans le livre de Knuth (Art of Computer Programming) mais il ne va pas dans le domaine "horror story" si ma mémoire est exacte.
Ceci dit j'ai déjà vu un logiciel de gestion de personnel (soit Staff squared ou Personio) qui me laissait avec 17.97 jours de congé, ce qui m'a presque fait pleurer de rire – et très perplexe parcequ'il faut beaucoup d'imagination pour trouver une explication à une erreur si grosse.
On peut certainement construire des exemples "taillés pour" dans le cadre de la comptabilité personnelle mais c'est peut-être plus satisfaisant de changer de contexte pour voir le problème. Si on prend par exemple une banque ou une chambre de compensation (un organisme interbancaire) on se retrouve avec:
Ce sont les ingrédients idéaux pour voir apparaître des erreurs d'arrondi en virgule flottante.
[1]:
- http://linuxfr.org/users/sytoka/journaux/la-mort-de-solaris-et-de-sparc#comment-1712484
- https://softwareengineering.stackexchange.com/questions/224434/why-do-we-still-use-floats/224518#224518