当我添加三个浮点值并将它们与 1 进行比较时,我遇到了问题。
cout << ((0.7 + 0.2 + 0.1)==1)<<endl; //output is 0
cout << ((0.7 + 0.1 + 0.2)==1)<<endl; //output is 1
为什么这些值会不同?
原文由 Karen Tsirunyan 发布,翻译遵循 CC BY-SA 4.0 许可协议
当我添加三个浮点值并将它们与 1 进行比较时,我遇到了问题。
cout << ((0.7 + 0.2 + 0.1)==1)<<endl; //output is 0
cout << ((0.7 + 0.1 + 0.2)==1)<<endl; //output is 1
为什么这些值会不同?
原文由 Karen Tsirunyan 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答1.3k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
4 回答832 阅读
1 回答907 阅读
1 回答940 阅读
1 回答707 阅读
1 回答809 阅读
浮点加法不一定是关联的。如果您更改添加的顺序,这可能会改变结果。
关于该主题的标准论文是 What Every Computer Scientist Should Know about Floating Point Arithmetic 。它给出了以下示例: