Pourquoi le premier exemple imprime-t-il un mauvais résultat?Perl opérateur modulo question
perl -le 'print $x = 100*1.15 % 5'
4
perl -le 'print $x = 1000*1.15 % 5'
0
Pourquoi le premier exemple imprime-t-il un mauvais résultat?Perl opérateur modulo question
perl -le 'print $x = 100*1.15 % 5'
4
perl -le 'print $x = 1000*1.15 % 5'
0
C'est à cause de l'arithmétique en virgule flottante.
print $x = int(100*1.15);
Vous donne 114.
Arrondi. Gardez à l'esprit que les ordinateurs ne peuvent pas représenter parfaitement les décimales réelles - ils sont approximatifs. Sur mon ordinateur, perl -le 'print $x = (100*1.15)-115'
donne le résultat -1.4210854715202e-14
, ce qui signifie que 100*1.15
est presque, mais pas tout à fait, 115.
Cela se produit également en PHP. Python dit que c'est 5.0 (yep,% 5 = 5.0) – NullUserException
@NullUserException: tnanks. python shell est bon pour tester les résultats des nombres flottants arithmétique :-) –
Donc, c'est ruby. Ruby me dit que c'est 4.999999 – NullUserException