-1

我正在解析一个带有一些数字的文件。我正在尝试将数字从字符串更改为浮点数或双精度数,但我发现 stof 和 stod 存在精度问题,它们在 VS C++ 中略有偏差。例如

string str1="3.14", str2="45.106";
double number1, number2;
number1=stod(str1);
number2=stof(str2);

当我测试(number1==3.14)时,它返回“false”。当我查看调试器时,number1 实际上是 3.139999999 或类似的东西!number2 可能是 45.1060000002 或类似的东西。有什么解释或解决方案吗?

4

1 回答 1

0

你不妨看看这个例子:

浮点数是如何存储的?什么时候重要?

从中学到的是,在两个浮点数之间进行直接比较几乎从来都不是解决方案。您在浮点数中只有一定的精度,因此您可以期望的精度是有限的,这很好地放在了 Zeta 评论中的链接中。

于 2013-03-05T20:34:09.950 回答