可能重复时:
Retain precision with Doubles in java
Moving decimal places over in a double表观不精确递增和显示双重价值
类是不言而喻的。如果你执行这个代码,double值看起来有些溢出,但是对于所有值都不会发生,而且,如果直接输出数字,那么输出是OK。
public class test {
public static void main(String[] args){
for (double f=1.36; f<1.40; f+=0.01) System.out.println(f);
//Prints 1.36
// 1.37
// 1.3800000000000001 ???????
// 1.3900000000000001 ???????
System.out.println(1.36); //Prints 1.36
System.out.println(1.37); //Prints 1.37
System.out.println(1.38); //Prints 1.38
System.out.println(1.39); //Prints 1.39
}
}
有人可以点亮吗?如果这是一个bug,那么在代码中修复它的最好方法是什么?任何魔术解决方法?
http://docs.oracle.com/cd/E19957-01/806-3568 /ncg_goldberg.html – NPE
即使JEval没有正确处理像“1400 * 0.001”这样的操作(这就是我追踪错误的原因),因此我不认为是如此愚蠢的问题,因为它是投票否定 – Whimusical
@ user1352530它是妥善处理的意义上,输出是完全符合规定的(就downvotes而言,这可能是因为这个问题可能每天问一次,所以通过一些搜索,你可能会发现一些东西,比如我上面发布的链接[Java常见问题](http://stackoverflow.com/tags/java/info))。 – assylias