us_30
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
10 sept. 2008 à 15:28
Bonjour Kevin,
Oui, j'avais bien compris que mes exemples faisaient un calcul en Double, et non en Décimal. Ce que je souligne, c'est dès qu'on utilise une opération autre que les 4 élémentaires (+, - , * , /) on passe en Double insidieusement... et il reste qu'il est plus que pas facile d'obtenir une racine carré en Decimal... puisque ^ , tout comme math.sqrt, donne un résultat en Double... (cela me semble même pas possible, à vrai dire...)
De plus, si dans :
Dim x AsDecimal = 1
x = x / 7
le résultat est en Décimal, je ne trouve pas que dans :
Dim x AsDecimal = 1
x = x / 7.0
qu'il soit logique de passer en Double...
Le type Décimal est sensé calculer avec des virgules flottantes aussi !?! En clair, le simple fait de mettre une virgule à 7.0, défini un Double... y'a de quoi de se prendre la tête un bon moment, le jour où on voudrait faire du calcul en 28 chiffres après la virgule avec des petits nombres...
Donc Logique, bof (un p'tit oui) , pratique, non ! ...
Et pour en revenir à la question première, on peut penser que le résultat du calcul de Dagry dont il souhait connaître le nombre de décimale après la virgule, est presque surement en Double... Par conséquent, informatiquement on atteindra pas les 19 décimales qu'il évoquait, mais 15 décimales au mieux...
En conséquence, il faut revoir les ambitions pour ce problème de précision...
Et franchement, je trouve un peu fort en chocolat, que Microsoft vante le type Decimal... on va pas très loin avec ! Voir on peut rien en faire !
Finalement, je pense que rester en Double dans les calculs à virgules reste encore la meilleure solution...
Note aussi, un autre truc étonnant, que je viens de constater avec le type System.UInt64, qui permet normalement d'aller de 0 à 18446744073709551615,
or l'IDE refuse qu'on rentre une borne supérieure au type System.Int64 (soit 9223372036854775807)... même si le calcul est possible...
C'est la misère les calculs en VB.NET... Il ne dépasse même pas le VBA ! (ou ce type Decimal existait déjà... avec les mêmes défauts... !!!!!)
Amicalement,
Us.