为什么字符串到浮点转换可能不起作用?

时间:2011-10-24 12:24:35

标签: c++ string floating-point

  

可能重复:
  Precision of Floating Point
  Can you compare floating point values exactly to zero?
  floating point issue

在我的c ++代码中,我有字符串:“0.55”。

我想将它转换为浮点值“0.55”,但我使用的所有函数都给我浮点值“0.55000001”。

为什么呢?我怎样才能明白这个价值?

最新版本的代码是:

wstring s = L"0.55";
float f = stof(s);

4 个答案:

答案 0 :(得分:4)

漂浮物不准确。这是因为有无数个可能的值,但只有有限的位数代表它们!

因为无法表示0.55,所以它会为您提供值0.55000001

更多信息可在以下网址找到:what every programmer should know about floating points arithmetics

答案 1 :(得分:3)

0.55没有精确的二进制表示。总会有一些舍入错误。

答案 2 :(得分:1)

没有浮点值0.55 - 格式不能代表该值。

阅读Floating-Point Guide以获取详细说明。

如果您需要十进制分数的精确表示,请使用小数格式,例如GMP library提供的。

答案 3 :(得分:0)

你可以使用一点代数,你将获得0.55     wstring s = L“0.55”;     float f = stof(s);

use floor function
f = floor(f);