Le type Numérique serait "le" type adapté à une gestion sans faute(s) ...
Bonjour
Un peu de code à mettre dans un bouton et des commentaires.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| num1 est un numérique
num1 = 123456789012345.67890123456789
//Info("123456789012345.67890123456789" + CRLF + num1 + " / " + TypeVar(num))
num2 est un numérique
num2 = 1234567890123456789.0
//Info("1234567890123456789.0" + CRLF + num2 + " / " + TypeVar(num2))
num3 est un numérique
num3 = 0n123456789012345.6789017654321
//Info("0n123456789012345.67890123456789" + CRLF + num3 + " / " + TypeVar(num3))
xTauxTVA est numérique(2,10) = 0n5.5
xMontant est un numérique(2,10) = 0n5
xUn est un numérique(2,10) = 0n1
xCent est un numérique(2,10) = 0n100
xRés1 est un numérique = xTauxTVA / 100
xRés2 est un numérique = 1 + xTauxTVA / 100
xRés3 est un numérique = xMontant / (xUn + xTauxTVA / xCent)
xRés4 est un numérique(2,10) = xMontant / (xUn + xTauxTVA / xCent)
xRés5 est un numérique(2,2) = xMontant / (xUn + xTauxTVA / xCent)
xRés6 est un numérique(2,2) = Arrondi(xMontant / (xUn + xTauxTVA / xCent),2)
Info("num1 - traité comme réel" + CRLF + "123456789012345.67890123456789" + CRLF + num1 + CRLF + CRLF +...
"num2 - traité comme réel, mais puissance 10 conservée" + CRLF + "1234567890123456789.0" + CRLF + num2 + CRLF + CRLF +...
"num3 - traité comme numérique avec décimales auto et sans arrondi" + CRLF + "0n123456789012345.6789016789017654321" + CRLF + num3 + CRLF + CRLF +...
xTauxTVA + CRLF + xRés1+ CRLF + xRés2 + CRLF + "Rés3 - 6 déc.auto : " + xRés3 + CRLF + "Rés4 - 10 déc. : " + xRés4 + CRLF + "Rés5 - tronqué : " + xRés5 + CRLF + "Rés6 - arrondi : " + xRés6) |
Num1
Affectation d’un numérique par une valeur sans préfixer par 0n et sans chiffre significatif après le séparateur décimal : cette valeur est automatiquement convertie en réel par le compilateur et donc arrondie au 15e chiffre significatif
Num2
Affectation d’un numérique par une valeur sans préfixer par 0n et avec des chiffres significatifs après le séparateur décimal : cette valeur est automatiquement convertie en réel par le compilateur et donc arrondie au 15e chiffre significatif, mais la puissance 10 initiale est conservée en ‘boostant’ le réel obtenu par l’ajout de 4 ‘0’ (zéros) à droite et on ‘restaure’ ainsi le nombre initial de chiffres précédant le séparateur décimal !!!
Num3
Affectation d’un numérique par une valeur en préfixant par 0n et avec des chiffres significatifs après le séparateur décimal.
La valeur affectée est conservée et tronquée (pas arrondie) au 6e rang, nombre automatique de décimales sauf déclaration explicite.
Les calculs (Résultats 4, 5 et 6) permettent de constater que si TOUS les opérandes sont des numériques correctement déclarés ET affectés (càd avec le préfixe 0n), tout fonctionne comme il se doit (mais à quel prix ! et avec quelles embûches en cours de route).
Les résultats sont tronqués et non arrondis selon le format affecté à la variable recevant le résultat.
Restent à explorer les éventuelles variations en fonction du type d’opération, soulevées par le test de Chris dans une discussion sur le forum de PCsoft.
Hemgé