C ++ stof() 函数在多次工作后出错

c++ stof() function wrong after working multiple times

本文关键字:工作 出错 函数 stof      更新时间:2023-10-16

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

ftemp = std::stof(stemp);

ftemp 和 stemp(浮点数和字符串的存储)在我的函数开头声明,并为每个数字覆盖。我使用 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。其余部分以相同的方式工作并正确执行。

任何帮助将不胜感激。

>这是正确的。float实现的单精度IEEE754保证精度高达7位左右。

9.9999997e-005 0.00000999999997,所以它足够接近。