我在学习K&R书。我现在在第四章,我正在阅读第71页的atof()函数。函数将字符串转换为其双精度浮点等效值。
atof()的代码如下:
//atof:将字符串s转换为double
double atof2(char s[])
{
double val, power;
int i, sign;
for (i = 0; isspace(s[i]); ++i) //skip white space
;
sign = (s[i] == '-') ? -1: 1;
if (s[i] == '-' || s[i] == '-')
++i;
for (val = 0.0; isdigit(s[i]); i++)
val = 10.0 * val + (s[i] - '0');
if (s[i] == '.')
++i;
for (power = 1.0; isdigit(s[i]); i++) {
val = 10.0 * val + (s[i] - '0');
power *= 10.0;
}
return sign * val / power;}
我的问题是关于变量的:权力。我们为什么要用它?
我确实理解变量的用法:"val“,但我不确定变量是"power”。我们为什么要用权力来划分瓦尔?
发布于 2015-10-21 11:14:25
变量power是将数字除以幂,得到的结果作为浮动点。
让您的字符串是-12.83,那么第一个for循环将检查空格和增量i作为无空格,i=0。
sign将以s[i]=s[0]='-'的身份成为-1。
在接下来的两个循环中,字符串的值被转换为整数并存储在val中(不包括. -自己计算)。
现在,在这两个循环之后,val将是1283。但是最后一个循环将迭代2时间,power将改为100.00 (第一次迭代中的10*1.0,第二次迭代中的10*10.0 )。
现在,要获得作为浮点的值,val除以power,乘以sign。
因此,它将返回的是-1*1283/100,因此-12.83是您的浮点数。
https://stackoverflow.com/questions/33257619
复制相似问题