首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

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

2012-12-23 
一个运算不报错也不出结果public class Test2 {public static void main(String[] args) {double d 0do

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



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.

热点排行