Abandonner Le type Double [Framework 1.1] ?
Salut,
je viens amener un débat sur la table.
Que pensez-vous du type double ?
voici le cas qui m'a fait très peur, je vous laisse une petite couche de code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
Dim tempsplage as double = 0
'--> boucle
Dim temps1 As Double
Try
temps1 = DateDiff(DateInterval.Minute, CDate(de1), CDate(A1)) / 60
' dans cet exemple le calcul sera toujours 504/60 --> 8.4
Catch
temps1 = 0
EndTry
'.
'.
'.
'temps5
Dim tempsTotal As double= temps1 + temps2 + temps3 + temps4 + temps5
tempsPlage = tempsPlage + tempsTotal
' Fin boucle
|
Mon code ramène en heures des intervalles de date en minutes. Le hic, c'est qu'à la 3ème boucle d'ajout dans la variable tempsplage, je me retrouve avec une imprécision violente alors que mes nombres sont bien ronds à 1 décimale après la virgule.
en gros tempsplage vaut successivement :
0
8.4 (+8.4)
16.8 (+8.4)
25.2000000000000003 (+8.4)
J'ai du mal à me dire qu'une grande imprécision sur du 0 me ramène un 3 quand je suis sûr que j'additionne bien 8.4 tout rond.
J'ai changé le type double en décimal et là plus de problème. Magie, mon total vaut bien 25.2.
Qu'en pensez-vous ? et quand utiliser le type double ? ou encore est-ce une particularité du framework 1.1 ? ou encore je sors :aie: