Nous avons rencontré un problème sur une application de facturation nécessitant des calculs précis.
L'application est en ASP 3.0/Vbscript et javascript.
Le vb donnant le même résultat que le javascript.
--- En vb : CDbl(a) - CDbl(b) ---> Round(val, 3)
--- En javascript : ParseFloat(a) - ParseFloat(b) ---> toFixed(3)
pour résoudre le problème, nous avons du utilisé l'opération d'arrondi pour avoir le résultat attendu.
J'ai déjà eu un problème sur les opérations quand les deux opérandes n'étaient pas de même type, par exemple (int / double).
J'ai voulu faire un test en C#, on obtient le même résultat :
Auriez-vous une explication à cette problématique ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 double a = double.Parse("6,8") - double.Parse("6,4"); decimal b = decimal.Parse("6,8") - decimal.Parse("6,4"); //Résultat : // a : 0.39999999999999947 // b : 0.4
J'ai pensé à l'encodage du type double, l'appproximation ...
Merci de vos réponses.
Partager