注册
登录
编程中国
搜索
标签
帮助
编程论坛
»
C语言论坛
» 关于pow函数的一个问题
搜索
学习型 ASP/PHP/ASP.NET 主机
30
元/年
全能
ASP/PHP/ASP.NET
主机,支持月付
专业
MSSQL
数据库空间,支持月付
专业
MySQL
数据库空间,支持月付
‹‹ 上一主题
|
下一主题 ››
发新话题
发布投票
发布商品
发布悬赏
发布活动
发布辩论
发布视频
打印
关于pow函数的一个问题
beyondlyf
新手上路
帖子
13
精华
0
注册时间
2008-5-8
个人空间
发短消息
加为好友
当前离线
1
#
大
中
小
发表于 2008-5-8 18:30
只看该作者
关于pow函数的一个问题
#include "math.h"
main()
{int i,n;
double sum;
scanf("%d",&n);
for(i=1,sum=0;i<=n;i++)
sum+=1/i*pow(-1,i+1);
printf("\nsum is %.2f\n",sum);
system("pause");}
这个程序无论我输入什么结果都是1.00,哪里出错了那?
搜索更多相关主题的帖子:
pow
函数
UID
250238
积分
143
阅读权限
10
在线时间
4 小时
最后登录
2008-6-2
查看详细资料
TOP
布拉莫斯
注册会员
帖子
164
精华
0
性别
男
来自
中国太平洋舰队
注册时间
2007-3-31
个人空间
发短消息
加为好友
当前离线
2
#
大
中
小
发表于 2008-5-8 18:36
只看该作者
错在 sum+=1/i*pow(-1,i+1); 这一句, ”1/i“ 被编译器视为整型相除,结果为整数, 当i=1时,1/i 结果为 1 , 当后面的i都大于1时, 1/i 结果就变成 0 了, 所以实际上你只能得 i =1 时的结果 ,后面的都因为
pow()结果乘以前面的0而变成0了, 所以,原因不是 pow的问题,。。
你把 ‘1/i’ 改成 “1.0/i” 试试!
真理往往掌握在少数人手中,可现实却是少数服从多数!
UID
136617
积分
1804
阅读权限
20
在线时间
437 小时
最后登录
2008-7-25
查看详细资料
TOP
beyondlyf
新手上路
帖子
13
精华
0
注册时间
2008-5-8
个人空间
发短消息
加为好友
当前离线
3
#
大
中
小
发表于 2008-5-8 18:52
只看该作者
按你说的的确可以 ,但是我这么想: 我之前已经定义 sum为double型,那么 sum+=1/i*pow(-1,i+1);中所有变量都要转换为double型再运算,所以1/i可以得到double型,这么想错哪儿了
UID
250238
积分
143
阅读权限
10
在线时间
4 小时
最后登录
2008-6-2
查看详细资料
TOP
布拉莫斯
注册会员
帖子
164
精华
0
性别
男
来自
中国太平洋舰队
注册时间
2007-3-31
个人空间
发短消息
加为好友
当前离线
4
#
大
中
小
发表于 2008-5-8 21:03
只看该作者
”1/i“ 编译器是不认同你的想法的,它是不会帮你自动转换的,甚至报错都不会。。。
真理往往掌握在少数人手中,可现实却是少数服从多数!
UID
136617
积分
1804
阅读权限
20
在线时间
437 小时
最后登录
2008-7-25
查看详细资料
TOP
‹‹ 上一主题
|
下一主题 ››
控制面板首页
编辑个人资料
积分记录
公众用户组