在Java中,将倍数乘以0.0000001与将其除以10000000相同?我的直觉是可能存在差异,因为0.0000001不能完全用双精度表示。
答案 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