2010-07-26 11 views
6

¿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 
+1

Esto también ocurre en PHP. Python dice que es 5.0 (sí,% 5 = 5.0) – NullUserException

+0

@NullUserException: tnanks. Python Shell es bueno para probar los resultados de la aritmética de los números de flotación :-) –

+0

Así que es ruby. Ruby me dice que es 4.999999 – NullUserException

Respuesta

9

Es debido a la aritmética de coma flotante.

print $x = int(100*1.15); 

Le da 114.

5

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.