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 撰写的"每个计算机科学家应该知道的关于浮点算术的内容".