为什么添加这两个双重不能给出正确的答案?

时间:2011-08-01 17:35:24

标签: java

  

可能重复:
  Retain precision with Doubles in java

import static java.lang.System.out;
public class q2{  
    public static void main(String args[]){  
        double x=4.02, y=0.05;  
        out.println(x+y);  
    }  
}

输出:

  

4.069999999999999

为什么输出那个。我以为会是4.07。请解释为什么在java中发生这种情况?

对于不准确的问题标题,我们深表歉意。我没有比这更好的头衔

2 个答案:

答案 0 :(得分:3)

这是因为某些数字 - 例如0.1 - 无法在二进制浮点中精确表示。

请阅读以下文章:

答案 1 :(得分:1)

您看到了舍入错误。见How to resolve a Java Rounding Double issue

要解决此问题,您可以更改为BigDecimal而不是双倍,如链接问题的已接受答案中所述。