Tag: operation

不可预知的双重

可能重复: .NET上的双精度问题 双重计算产生奇数结果 我知道双值0.2内部represantation类似于0.199999 。 但是下面的代码仍然让我感到困惑。 码: public static void main(String[] args) { double d= 0.3d; double f= 0.1d; System.out.println(d+f); System.out.println(d*f); System.out.println(d); System.out.println(f); System.out.println(df); System.out.println(d/f); System.out.println((df)*(df)); } OUTPUT: 0.4 0.03 0.3 0.1 0.19999999999999998 2.9999999999999996 0.039999999999999994 实际上发生了什么? 加法,乘法顺利,但减法,除法不是。 任何人都可以详细说明为什么加法与减法不同 ?