首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >K&R书练习4-2

K&R书练习4-2
EN

Stack Overflow用户
提问于 2015-10-21 11:01:24
回答 1查看 212关注 0票数 3

我在学习K&R书。我现在在第四章,我正在阅读第71页的atof()函数。函数将字符串转换为其双精度浮点等效值。

atof()的代码如下:

//atof:将字符串s转换为double

代码语言:javascript
复制
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”。我们为什么要用权力来划分瓦尔?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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是您的浮点数。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33257619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档