由于精度问题 9.0<9.0 在内存实现时有可能成立,所以会多做一个循环。如果要确保不多做一个循环,应该用类似 9.0-9.0<0.000001,(根据精度需要)
由于精度问题 9.0<9.0 在内存实现时有可能成立,所以会多做一个循环。如果要确保不多做一个循环,应该用类似 9.0-9.0<0.000001,(根据精度需要)
看题不仔细,那是 while (X1 < X2 - 0.1), 不是 while(X1 < X2).就应该是 9,9
最后一次满足的条件是 9 〈 9.1, 进入循环体再做一次 X2 = 9.1 - 0.1 = 9
没看出X2是volatile, 加了有用?试试x2前面加 volatile
好更正一下。我说的9.0 < 9.0 就是 9.1-0.1<9.0 的意思。总之,两个 double 直接比较是很危险的。因为具体结果同具体的机器硬件有关。16 位,32位,64位可能得到不同结果。正确的应该是 d1-d2<可接受精度。这样保证代码的可移植性。