gpt4 book ai didi

c++ - 累积误差

转载 作者:行者123 更新时间:2023-11-27 22:30:09 25 4
gpt4 key购买 nike

我有一个非常直截了当的问题。以下代码打印出摄氏度和华氏度。我的问题是关于它迭代的次数。对于少量,例如从 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;
}

最佳答案

浮点舍入错误。从本质上讲, float 并不是 100% 准确的表示,您所做的每一次计算都存在错误,并且随着您反复添加它们,您将添加越来越多的错误。您应该做的是计算一次步数,将其存储在一个整数中,然后循环多次。

关于c++ - 累积误差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3695178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com