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
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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![]()
Partager