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));
?