当我添加三个浮点值并将它们与 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 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.5k 阅读
3 回答474 阅读✓ 已解决
浮点加法不一定是关联的。如果您更改添加的顺序,这可能会改变结果。
关于该主题的标准论文是 What Every Computer Scientist Should Know about Floating Point Arithmetic 。它给出了以下示例: