【发布时间】:2012-08-07 09:40:06
【问题描述】:
当我尝试将 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++;
}
}
}
【问题讨论】:
-
你可以发布你遇到问题的案例吗?
-
他确实发布了案例......代码是他发现问题的原因
-
@Mr.32:在大多数 cpu 架构/ABI 上,浮点和整数返回值在不同的寄存器中传输。因此,这不是重新解释值的问题,而是当
atof使用此输入完成时,整数返回值寄存器中最终会发生什么。 -
@20120:你真的运行过代码吗?如果你这样做了,那么你在
sprintf产生的字符串中真的有那个空格吗? -
@20120: 好的,那么你可以尝试包括
<locale.h>并按照我之前的建议执行setlocale吗?我只是好奇它是否会有所帮助......