标题:修改一点点就错了...求解释呀呀呀
取消只看楼主
sistly
Rank: 1
等 级:新手上路
帖 子:5
专家分:3
注 册:2014-6-13
结帖率:100%
已结贴  问题点数:10 回复次数:3 
修改一点点就错了...求解释呀呀呀
一.
double p;
p = pow(1 + 0.09, 10);
printf("p = %lf\n", p);  结果显示:是p = 2.367364  正确

double p;
p = pow(1 + 9/100, 10);
printf("p = %lf\n", p);   结果显示:是p = 1.000000
为什么呢?


二.还有将上面的程序改为:
double p, r;
char n = 10;
r = 0.09;
p = pow(1 + r, n);
printf("p = %lf\n", p);
此时编译时会弹出:
in function 'main':
undefined reference to 'pow'
collect2: ld 返回 1
这又是为什么?


这两个,我在32位和64位系统上都尝试了,结果都是这样的
搜索更多相关主题的帖子: 呀呀呀 double function reference undefined 
2014-06-13 19:24
sistly
Rank: 1
等 级:新手上路
帖 子:5
专家分:3
注 册:2014-6-13
得分:0 
回复 2 楼 rjsp
我写了#include<math.h>

我是这样想的:
  我前面定义了双精度浮点数的变量
  double p;
  那么系统在计算时
  p = pow(1 + 9/100, 10);
  因为p是double类型,9/100会被计算为0.09。
  而如果p是int类型的,那么9/100就是0了。
2014-06-13 21:33
sistly
Rank: 1
等 级:新手上路
帖 子:5
专家分:3
注 册:2014-6-13
得分:0 
回复 5 楼 砖家的谎言
恩,刚才是看
2014-06-14 20:24
sistly
Rank: 1
等 级:新手上路
帖 子:5
专家分:3
注 册:2014-6-13
得分:0 
回复 4 楼 rjsp
哦~明白了。。。谢喽
2014-06-14 20:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-432897-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.053743 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved