gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 03:04:43 26 4
gpt4 key购买 nike

我写了一个读取对象的函数。文件并将字符串转换为 float 。代码工作正常,直到 stof() 函数停止正常工作。我不确定这部分是如何突然停止工作的,因为它似乎是一件非常简单的事情,而且直到现在它一直都在工作。

ftemp = std::stof(stemp);

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

如有任何帮助,我们将不胜感激。

最佳答案

没错。 IEEE754对于 float 实现的单精度,保证精度高达大约 7 位有效数字。

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

关于c++ stof()函数在多次工作后出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20023196/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com