在这种情况下,pow功能如何工作?

时间:2014-04-11 12:39:58

标签: c pow math.h

#include <stdio.h>
#include <math.h>

int main()
{
int i = 11;
printf("%d ^ 2 = %d\n",i,(int)pow(i,2));
getchar();
return 0;
}

在这种情况下,而不是获得121,我得到120.我正在犯的错误是什么? (我真的需要将pow(i,2)打印为int。)

2 个答案:

答案 0 :(得分:5)

转换为整数截断分数,可能pow返回类似120.99999998左右......

请勿投放到(int)并使用%g格式代替%d来打印double的{​​{1}}结果。

答案 1 :(得分:1)

这与从double到int的舍入有关。

由于功率不变,为什么要有开销。

坚持

printf("%d ^ 2 = %d\n",i, i*i);