Bonjour,
Suite à la lecture sur un tutoriel de perl6 sur ce site où il est fait mention de cette erreur, la voici montré ici via awk, mais que l'on rencontre dans presque tous les langages:
Bon, là, on voit que le dernier calcul est faux...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $ awk 'BEGIN{print 0.3-0.2}' 0.1 $ awk 'BEGIN{print 0.3-0.1}' 0.2 $ awk 'BEGIN{print 0.3-0.2-0.0}' 0.1 $ awk 'BEGIN{print 0.3-0.2-0.1}' -2.77556e-17
Par contre, ce que je trouve gênant:
Et c'est pareil en perl5 ou python (2 ou 3)...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $ awk 'BEGIN{printf("%f\n",0.3-0.2-0.1)}' -0.000000
Python2:
Python3:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $ python -c 'print "%f" % (0.3-0.2-0.1)' -0.000000 $ python -c 'print 0.3-0.2-0.1' -2.77555756156e-17
Perl5:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $ python3 -c 'print( "%f" % (0.3-0.2-0.1))' -0.000000 $ python3 -c 'print((0.3-0.2-0.1))' -2.7755575615628914e-17
Note d'Attention: les résultats bons sont liés au fait que l'on représente les nombres en tant que flottant et non en tant qu'exposant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $ perl -e 'printf("%f\n",0.3-0.2-0.1)' -0.000000 $ perl -e 'print 0.3-0.2-0.1."\n"' -2.77555756156289e-17
Partager