Possible Duplicate:
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中会发生这种情况?

抱歉,问题标题不正确。我再没有比这更好的头衔了

最佳答案

这是因为某些数字(例如0.1)无法用二进制浮点数精确表示。

考虑阅读以下文章:


What Every Computer Scientist Should Know About Floating-PointArithmetic

10-06 10:06
查看更多