多次工作后c ++ stof()函数错误

时间:2013-11-16 20:06:20

标签: c++ function std

我写了一个读取obj的函数。 file并将字符串转换为浮点数。代码工作正常,直到stof()函数停止正常工作。我不确定这部分是如何突然停止工作的,因为它似乎是一件非常直接的事情,而且它现在每次都有效。

ftemp = std::stof(stemp);

ftemp和stemp(float和string的存储)在我的函数开头声明,并为每个数字覆盖。我使用fstream和迭代器来查找数字。其余的代码很容易想象并按预期工作,所以除了失败的部分之外我会省略所有内容。

这是在.obj文件中,应该代表一个纹理平面。

# Blender v2.68 (sub 0) OBJ File: ''
# www.blender.org
v -1.000000 1.000000 -1.000000
v 1.000000 1.000000 -1.000000
v -1.000000 1.000000 1.000000
v 1.000000 1.000000 1.000000
vt 0.000100 0.000100
vt 0.999900 0.000100
vt 0.000100 0.999900
vt 0.999900 0.999900
s off
f 2/1 1/2 4/3
f 1/2 3/4 4/3

它在读取vt线时失败。因此,当stemp持有“0.000100”时,ftemp应保持0.000100但它仍然存在:9.9999997e-005。其余的工作方式相同,并且正确。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

这是对的。对float实现的单精度IEEE754,保证精度高达约7位有效数字。

9.9999997e-0050.00000999999997所以它足够接近。