gpt4 book ai didi

c++ - 为什么在使用 sscanf_s 或 atof 将 char * 转换为 float 时会出现精度损失?

转载 作者:行者123 更新时间:2023-11-30 00:46:29 26 4
gpt4 key购买 nike

我正在尝试将仅包含浮点值的 char * 转换为 float 类型,但 sscanf_s 和 atof 都产生相同的无效结果。

char t[] = "2.10";
float aFloat( 0.0f ), bFloat( 0.0f );

sscanf_s( t, "%f", &aFloat );
bFloat = atof( t );

输出:

aFloat: 2.09999990
bFloat: 2.09999990

当我查看类似问题以试图确定答案时,我尝试了他们的解决方案但无济于事。

Converting char* to float or double

这里给出的解决方案是包含“stdlib.h”,这样做之后我将对 atof 的调用更改为显式调用“std::atof”,但仍然没有成功。

最佳答案

不幸的是,并非所有浮点值都可以用二进制形式显式表示。如果你说,你会得到相同的结果

float myValue = 2.10;

关于c++ - 为什么在使用 sscanf_s 或 atof 将 char * 转换为 float 时会出现精度损失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38312044/

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