问题描述
- atof函数编程怎么理解?
- double myatof(char *p)//将字符串转换为浮点型,暂时只限小数点格式(如:342.678)
{
double n=0;
int i=-1;
while( 1 )
{
if (isdigit(*p)) //如果是数字
{
n = n*10 + (*p) -'0';
if(i != -1) i++; //小数位数i计数
}
else if ( *p == '.' && i == -1) //如果是第一个小数点
i=0; //开启小数位数i计数
else
break;
p++;
}
for(; i>0; i--) //根据小数位数i,将n取为原来的(10^i)分之一
n /= 10;return n;
}
C语言刚学,这个代码有注释还是看不太懂,讲一下思路吧。。。
解决方案
将1个字符串转换为1个浮点数
如:
float f = atof(""123.456"");
//f = 123.456
解决方案二:
float f = atof(""123.456"");
解决方案三:
[code=c]
字符串和数字之间进行转换的函数类似的还有
[/code]
解决方案四:
跟atof的思路一样的
解决方案五:
首先将字符类型的‘0’~‘9’转化为double类型,再乘以相应的权重,比如字符输入‘1’‘2’‘3’转化为1*100+2*10+3,如果遇到小数点,则在此时
开始计算小数点后的位数,如果小数点后有n位,就除以10的n次方,
例如 输入字符‘1’‘2’‘3’'.'‘4’‘5’计算为(1*10000+2*1000+3*100+4*10+5)/(10的2次方)
时间: 2024-08-30 22:16:30