可能重复:
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);
答案 0 :(得分:4)
漂浮物不准确。这是因为有无数个可能的值,但只有有限的位数代表它们!
因为无法表示0.55
,所以它会为您提供值0.55000001
。
更多信息可在以下网址找到:what every programmer should know about floating points arithmetics
答案 1 :(得分:3)
0.55
没有精确的二进制表示。总会有一些舍入错误。
答案 2 :(得分:1)
答案 3 :(得分:0)
你可以使用一点代数,你将获得0.55 wstring s = L“0.55”; float f = stof(s);
use floor function
f = floor(f);