stof()和stod()精度

时间:2013-03-05 20:29:43

标签: c++ floating-point

我正在使用一些数字解析文件。我正在尝试将数字从字符串更改为float或double,但我发现了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或类似的东西。任何解释或解决方案?

1 个答案:

答案 0 :(得分:0)

您可能希望看一下这个例子:

How is floating point stored? When does it matter?

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