搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 整数用 pow
标题:
整数用 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
来 自:神界
等 级:
版主
威 望:
422
帖 子:13681
专家分:53296
注 册: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
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-430908-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 2.079518 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved