当前位置: 代码迷 >> J2SE >> 一个演算不报错也不出结果
  详细解决方案

一个演算不报错也不出结果

热度:4936   发布时间:2013-02-25 21:55:43.0
一个运算不报错也不出结果


public class Test2 {


public static void main(String[] args) {
double d = 0;
double sum = 0;
while(d != 10) {
d += 0.1;
sum += sum + d;

}
System.out.println(sum);
}
}




这题的sum为什么出不来结果?也不报错。貌似变成了死循环。
有些疑惑,求解答。double的精度造成的
你把d 的值打印出来看看就知道了。
    public static void main(String[] args) {
        final double DELTA = 0.0001;
        double d = 0;
        double sum = 0;

        // 浮点数相等的比较,是在一个范围内,而不是直接使用 ==
        while (Math.abs(d - 10) > DELTA) {
            d += 0.1;
            sum += d;
        }

        System.out.println(sum);
    }
d是Double类型的,应该是不可能等于10,所以while()里相当为true,所以形成死循环了!你可以在while里打印一下,看不到10.
  相关解决方案