gpt4 book ai didi

c - atof() 在 symbian 中没有获取全部值(value)

转载 作者:行者123 更新时间:2023-12-04 18:15:07 25 4
gpt4 key购买 nike

当我尝试将 char 转换为 float 时,我正在使用 atof 并且它没有返回整个值,& 如何更正此问题 有没有其他方法可以做到这一点?

如果我给出这个长度(700.898)的值,它会返回正确的值。如果我给出的数字超过 3 个,那么只会遇到问题。如果我问错了什么,对不起。

float flt = 71237.898;
char myfloat[50];
sprintf (myfloat, "%f", flt); //myfloat = 71 237.8984380
float f = atof(myfloat); //f = 71.0000

删除空格:
int myfllen = strlen(myfloat);
for(int b=0;b<strlen(myfloat);b++)
{
if(myfloat[b] == ' ')
{
int c = b;
while(c<=myfllen)
{
myfloat[c] = myfloat[c+1];
c++;
}
}
}

最佳答案

你真的有71之间的空间吗?和 237sprintf 之后,正如您在评论中发布的那样?如果是这样,那么这很可能是 atof 的原因。在 71 之后停止解析字符串.您实际上可以切换到strtod (总是比 atof 更好的主意)并要求它给你导致它停止解析的字符位置。

显然您的语言环境设置使 sprintf使用空格作为数字组分隔符。同时atof不支持区域设置。语言规范不需要atof ( strtod ) 识别除 "C" 之外的语言环境的特定于语言环境的数字格式语言环境。

setlocale(LC_ALL, "C")之前 sprintf它应该有望摆脱那个空间。或者手动清理这些空间。

关于c - atof() 在 symbian 中没有获取全部值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11895686/

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