¿Por qué el primer ejemplo imprime un resultado incorrecto?Operador de módulo Perl pregunta
perl -le 'print $x = 100*1.15 % 5'
4
perl -le 'print $x = 1000*1.15 % 5'
0
¿Por qué el primer ejemplo imprime un resultado incorrecto?Operador de módulo Perl pregunta
perl -le 'print $x = 100*1.15 % 5'
4
perl -le 'print $x = 1000*1.15 % 5'
0
Es debido a la aritmética de coma flotante.
print $x = int(100*1.15);
Le da 114.
redondeo. Tenga en cuenta que las computadoras no pueden representar los decimales reales a la perfección, se aproximan. En mi computadora, perl -le 'print $x = (100*1.15)-115'
da el resultado -1.4210854715202e-14
, lo que significa que 100*1.15
es casi, pero no del todo, 115.
Esto también ocurre en PHP. Python dice que es 5.0 (sí,% 5 = 5.0) – NullUserException
@NullUserException: tnanks. Python Shell es bueno para probar los resultados de la aritmética de los números de flotación :-) –
Así que es ruby. Ruby me dice que es 4.999999 – NullUserException