避免舍入错误(特别是浮动)c ++

Cpp*_*ner 10 c++

http://www.learncpp.com/cpp-tutorial/25-floating-point-numbers/ 我最近一直在讨论C++.

一般而言,计算类教授往往不会涵盖这些小事,尽管我们知道舍入错误的含义.

有人可以帮我解决如何避免舍入错误?

本教程显示了示例代码

#include <iomanip>
int main()
{
    using namespace std;
    cout << setprecision(17);
    double dValue = 0.1;
    cout << dValue << endl;
}
Run Code Online (Sandbox Code Playgroud)

这输出

0.10000000000000001

默认情况下,float保持6位精度.因此,当我们覆盖默认值,并要求更多(在这种情况下,17 !!)时,我们可能会遇到截断(如教程中所解释的).双倍,最高为16.

一般来说,优秀的C++程序员如何避免舍入错误?你们总是看看这个数字的二进制表示吗?

谢谢.

Jim*_*wis 15

关于这个主题的规范建议是阅读David Goldberg 撰写的"每个计算机科学家应该知道的关于浮点算术的内容".

  • 请用足够的详细信息更新您的答案。现在它只是一个链接答案。 (3认同)