乘以0.0000001乘以10000000相同?

时间:2014-12-15 15:22:30

标签: java floating-accuracy

在Java中,将倍数乘以0.0000001与将其除以10000000相同?我的直觉是可能存在差异,因为0.0000001不能完全用双精度表示。

2 个答案:

答案 0 :(得分:14)

不,因为你提到的原因不一样。这是一个例子:

double x = 894913.3;
System.out.println(x * 0.0000001);    // prints 0.08949133
System.out.println(x / 10000000);     // prints 0.08949133000000001

使用BigDecimal,我们可以看到两个值之间的差异:

System.out.println(new BigDecimal(0.0000001));
System.out.println(new BigDecimal((double)10000000));

输出继电器:

9.99999999999999954748111825886258685613938723690807819366455078125E-8
10000000

答案 1 :(得分:2)

由于双重表示,它不仅不一样,而且如果将整数乘以double,则结果为double。如果用整数表示整数,则结果为整数:

int i = 1;
System.out.println(i*0.0000001);
System.out.println(i/10000000);

打印

1.0E-7
0