gpt4 book ai didi

C++ 数值截断错误

转载 作者:可可西里 更新时间:2023-11-01 18:11:51 27 4
gpt4 key购买 nike

对不起,如果我笨但找不到答案。

#include <iostream>

using namespace std;

int main()
{
double a(0);
double b(0.001);
cout << a - 0.0 << endl;
for (;a<1.0;a+=b);
cout << a - 1.0 << endl;
for (;a<10.0;a+=b);
cout << a - 10.0 << endl;
cout << a - 10.0-b << endl;
return 0;
}

输出:
0
6.66134e-16
0.001
-1.03583e-13

尝试用MSVC9、MSVC10、Borland C++ 2010编译,最后都报了1e-13左右的错误。仅在 1000、10000 增量中累积如此显着的误差是否正常?

最佳答案

是的,这是正常的数字表示浮点错误。它与这样一个事实有关,即硬件必须近似大多数 float ,而不是准确地存储它们。因此,您使用的编译器无关紧要。

What Every Computer Scientist Should Know About Floating-Point Arithmetic

关于C++ 数值截断错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2785601/

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