12 mai 2009

Résultat erroné dans un calcul sur des numériques

L'expression courante "on en apprend tous les jours" est sans doute la plus vraie qui soit !

Hier encore je pensais que le type "numérique" était juste comme le type "monétaire". Ce n'est pas tout à fait exact, son affectation directe se faisant via un réel, on peut avoir des valeurs ou arrondis inattendus inhérents au codage des réels de Windows (IEEE).

Mais aujourd'hui après une consultation de l'aide sur le type numérique, j'ai appris une syntaxe permettant de forcer une affectation pour qu'elle soit juste. Je pense qu'il est bon de garder cette information à l'esprit dès lors qu'un traitement nécessite une importante précision de calcul.

Ainsi l'écriture traditionnelle :

nValeur est un numérique
nValeur = 1234567890123456789.01
Trace(nValeur)
Sera avantageusement remplacée par :
nValeur est un numérique
nValeur = 0n1234567890123456789.01
Trace(nValeur)
Attention le "0n" qui précède la valeur est un "zéro" combiné avec la lettre "n". Il ne s'agit pas des lettres "o" et "n".

Aucun commentaire: