java coldfusion floating-point-precision cfml

java - ¿Por qué 0.06+0.01=0.07 en ColdFusion?



floating-point-precision cfml (1)

¿Por qué las operaciones matemáticas en ColdFusion no parecen verse afectadas por problemas matemáticos de punto flotante? Toma el código:

result = 0.06 + 0.01; writedump(result); writedump(result.getClass().getName());

Que salidas

0.07

java.lang.Double

Sin embargo, el código Java equivalente produce lo que esperaba al agregar dos dobles:

public static void main(String[] args) { double a = 0.01d; double b = 0.06d; System.out.println(a + b); //0.06999999999999999 }

Esto es lo que esperaría ver de ColdFusion debido a las realidades de las matemáticas flotantes ( http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html ).

¿ColdFusion hace algo de "magia" detrás de escena o estoy viendo una anomalía aislada aquí?


Sospecho fuertemente que simplemente se redondea de manera diferente en la salida . En otras palabras, el problema sigue ahí: simplemente no aparece cuando este valor en particular se imprime con writedump .

Que pasa si usas:

writedump(String.valueOf(result));

?