Bonjour à tous,
Je commence l'étude de java et je suis tombé sur un comportement de Java qui me semble un peu bizarroïde.
(pour info, je bosse sur éclipse sous windows 8 avec JavaSE 1.7)
Si des "bons" on une explication, je suis preneur!
Je me permet de vous soumettre ce simple code qui montre ce qui chez moi me semble délirer.
Si vous pouviez le lancer pour voir si vous avez le même comportement que chez moi
Voilà ma sortie console :
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
22
23
24
25
26
27
28
29
30
31
32
33 public static void main(String[] args) { double a1=1.055D; double a2=0.001D; double a3=a1+a2; System.out.println("a2 = "+a2); System.out.println("a1 = "+a1); System.out.println("a3 = "+a3); System.out.println(); System.out.println("les 5 lignes suivantes sont sensées afficher les mêmes valeurs!!!"); System.out.println(1.056D); System.out.println(1.055+0.001D); //d'où peut bien venir System.out.println(a1+0.001D); //ce qui me semble System.out.println(a1+a2); //être vrai un bug de System.out.println(a3); // JAVA System.out.println(); System.out.println(a3+a3); //comment faire confiance à ça? System.out.println(); System.out.println(a1+0.002D); System.out.println(a1+0.003D); System.out.println(a1+0.004D); System.out.println(a1+0.005D); System.out.println(a1+0.006D); System.out.println(a1+0.007D); System.out.println(a1+0.008D); System.out.println(a1+0.009D); System.out.print("Je trouve que ça craint! Pas vous?"); }
a2 = 0.001
a1 = 1.055
a3 = 1.0559999999999998
les 5 lignes suivantes sont sensées afficher les mêmes valeurs!!!
1.056
1.0559999999999998
1.0559999999999998
1.0559999999999998
1.0559999999999998
2.1119999999999997
1.057
1.0579999999999998
1.059
1.0599999999999998
1.061
1.0619999999999998
1.063
1.0639999999999998
Je trouve que ça craint! Pas vous?
Partager