28

为什么 ColdFusion 中的数学运算似乎不受浮点数学问题的影响?拿下代码:

result = 0.06 + 0.01;

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

哪个输出

0.07

java.lang.Double

然而,当添加两个双打时,等效的 Java 代码会产生我所期望的:

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 回答