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) {d是Double类型的,应该是不可能等于10,所以while()里相当为true,所以形成死循环了!你可以在while里打印一下,看不到10.
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);
}