我懷疑這可能有一些做,因爲我用雙打來控制循環終止舍入誤差,但我想真正瞭解發生了什麼事情while循環不會終止正確
#include<iostream>
using namespace std;
int main()
{
double h = 0.2; // stepsize
double t_0 = 1;
double t_n = 25;
double y_0 = 1; // initial condition
double t = t_0;
while(t < t_n)
{
cout << "t: " << t << endl;
cout << "(t < t_n): " << (t < t_n) << endl;
t += h;
}
}
輸出的最後幾行是
t: 24.4
(t < t_n): 1
t: 24.6
(t < t_n): 1
t: 24.8
(t < t_n): 1
t: 25
(t < t_n): 1
應該不是最後陳述返回false?也就是說,循環不應終止@ 24.8?
所以即使「25」被打印到屏幕上,它實際上是24.99內部的東西嗎?另外,你會如何建議終止這樣一個循環,知道你不能退出使用0.2?並且謝謝! – bcf 2013-04-28 21:30:41
@大衛正確,你得到的數字非常接近'25'(24.9 ...和大量的9),所以'printf'將它打印爲'25'。 – dasblinkenlight 2013-04-28 21:38:03