• [^] # Re: nan, c'est pas un problème d'arrondi qui te guette

    Posté par (site web personnel) . En réponse au journal SQL Decimal vs Double. Évalué à 2.

    Tu as toujours le ((a-1)*n) + (a * n) = n, pour n dans [0;1] ? Et c'est vrai aussi pour plus de 2 termes ? avec du calcul décimal.

    Dans les modèles numériques courants seul les modèles d'arithmétique exacte satisfont les identités algébriques dans leur généralité. Le calcul en virgule flottante ou en virgule fixe ne le font pas. Si je comprends bien le rappel https://www.w3schools.com/sql/sql_datatypes.asp le DECIMAL de SQL est essentiellement traité comme un nombre en virgule flottante (pour toute la partie arithmétique je suppose) mais la virgule est repositionnée pour la sérialisation.

    Si tu veux faire faire ton calcul garanti exact par le serveur SQL il me semble que c'est peine perdue – sauf si tu sais a priori que la précision utilisée est suffisante pour ce calcul.

    Je n'imagine pas t'apprendre quoique ce soit mais je précise pour ceux qui lisent encore: à part Lisp et Scheme les langages généralistes ne calculent pas en arithmétique exacte et il faut donc utiliser une bibliothèque spécialisée, comme la gmp lib pour C et bignum en OCaml.