28

ColdFusion の数学演算が浮動小数点演算の問題の影響を受けないように見えるのはなぜですか? コードを取得します。

result = 0.06 + 0.01;

writedump(result);
writedump(result.getClass().getName());

どの出力

0.07

java.lang.Double

ただし、同等の Java コードは、2 つの double を追加するときに期待するものを生成します。

public static void main(String[] args) {
    double a = 0.01d;
    double b = 0.06d;

    System.out.println(a + b); //0.06999999999999999
}

これは、浮動小数点演算 ( http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html )の現実により、ColdFusion に期待するものです。

ColdFusion は舞台裏で何らかの「魔法」を行っているのでしょうか、それともここで孤立した異常を見ているのでしょうか?

4

1 に答える 1

38

outputで丸め方が違うだけだと強く思います。言い換えれば、問題はまだそこにあります - この特定の値が で出力されたときにたまたま現れないだけwritedumpです。

使用するとどうなりますか:

writedump(String.valueOf(result));

?

于 2011-09-14T20:32:56.630 に答える