|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 整数用 pow
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
660
人关注过本帖
标题:
整数用 pow
只看楼主
加入收藏
QZMP
等 级:
新手上路
帖 子:4
专家分:0
注 册:2014-4-20
楼主
收藏
问题点数:0 回复次数:8
整数用 pow
int main()
{
int a,b,c;
scanf("%d %d",&a,&b);
c=(int)pow((double)a,b);
printf("%d",c);
}
这段代码是求两整数a的b次方,并将结果c转为int型输出,但像求5的平方输出结果是24,三次方是124,而其他的数好像都正确,这是什么原因
搜索更多相关主题的帖子:
double
2014-05-01 22:54
举报帖子
使用道具
赠送鲜花
wp231957
来 自:神界
等 级:
贵宾
威 望:
423
帖 子:13688
专家分:53332
注 册:2012-10-18
第
2
楼
收藏
得分:0
自已写一个p0w
不使用库函数
DO IT YOURSELF !
2014-05-01 23:22
举报帖子
使用道具
赠送鲜花
kwxx
等 级:
蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
第
3
楼
收藏
得分:0
怎么会呢?我这里运行没问题。
2014-05-02 07:45
举报帖子
使用道具
赠送鲜花
QZMP
等 级:
新手上路
帖 子:4
专家分:0
注 册:2014-4-20
第
4
楼
收藏
得分:0
回复 3 楼 kwxx
但我电脑运行结果就是那样,搞不清为什么
2014-05-02 16:27
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
5
楼
收藏
得分:0
還沒想到自己求解的辦法嗎?學會自己想辦法,勝於別人直接告訴你原因。
授人以渔,不授人以鱼。
2014-05-03 10:32
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
6
楼
收藏
得分:0
求助的時候,把使用的環境(平臺)、編譯器、事實(截圖)提供出來,才有真相、有答案,這是基本的交流原則。你明明看到有人說沒碰到這個現象,你說有,就把事實擺出來呀,不讓人看到現場,卻總問為什麽,這到底是為什麽?
授人以渔,不授人以鱼。
2014-05-03 11:07
举报帖子
使用道具
赠送鲜花
那时年少
等 级:
新手上路
帖 子:13
专家分:5
注 册:2014-3-9
第
7
楼
收藏
得分:0
应该没问题才对
#include<stdio.h>
#include<math.h>
main()
{
int a, b, c;
scanf("%d%d", &a, &b);
c
= (int)pow(a,b);
printf("%d\n", c);
}
试试这个,我以前就是这么写的,没问题
可能是你前面定义了a为int,pow里面又用了double
层主表示刚学c语言,为什么会这样我也不是很清楚
2014-05-03 13:09
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
8
楼
收藏
得分:0
這種就是沒事玩代碼。編譯的時候,沒看見編譯器警告你把double型強制解釋成int型有可能丢失精度嗎?為什麽非要把double的結果轉成int給c?c不用int行不行?這些都不去想,就轉來轉去,不是玩代碼是什麽,都不是根據實際需要寫的,純粹是校園應試代碼。
授人以渔,不授人以鱼。
2014-05-03 13:22
举报帖子
使用道具
赠送鲜花
top398
等 级:
蝙蝠侠
威 望:
2
帖 子:427
专家分:857
注 册:2014-5-2
第
9
楼
收藏
得分:0
撸主似乎是因为精度误差造成问题的。浮点数(即使双精度或更高)并不能准确表达某些整数,只是一个近似值。可以这样:
printf("%f\n",round(pow((double)a,b)+0.000005));
或:
printf("%d\n",(int)(pow((double)a,b)+0.000005));
不同编译器可能选择了不同的舍入方式,有些可以无需这样处理。
2014-05-03 14:15
举报帖子
使用道具
赠送鲜花
9
1/1页
1
快速回复:
整数用 pow
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.014302 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved