我有一个非常直截了当的问题。以下代码打印出摄氏度和华氏度。我的问题是关于它迭代的次数。对于较小的数字,例如从 0 开始,在 10 处停止,步长为 1.1。循环完成后,它将打印出正确的迭代次数。
但是对于 0-11000000 的大数,使用步骤 1.1 会打印出错误的迭代次数。为什么会这样?由于 1100000/1.1 应该在 1000001 左右,但我得到 990293。
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
float start, stop, step;
int count = 0;
cout << "start temperature: ";
cin >> start;
cout << "stop temperature: ";
cin >> stop;
cout << "step temperature: ";
cin >> step;
cout << setw(10) << "celsius" << setw(15) << "fahrenheit" << endl;
cout << setw(25) << "celsius" << setw(15) << "fahrenheit" << endl;
while(start <= stop)
{
count++;
float c, f;
c = (5.0/9)*(start-32);
f = 32+(9.0/5)*start;
cout << setw(10) << fixed << setprecision(2) << c << setw(15) << start << setw(15) << fixed << setprecision(2) << f << " count: " << count << endl;
start = start + step;
}
cout << "The program loop made " << count << " iterations." << endl;
return 0;
}