#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。)
答案 0 :(得分:5)
转换为整数截断分数,可能pow
返回类似120.99999998左右......
请勿投放到(int)
并使用%g格式代替%d来打印double
的{{1}}结果。
答案 1 :(得分:1)
这与从double到int的舍入有关。
由于功率不变,为什么要有开销。
坚持
printf("%d ^ 2 = %d\n",i, i*i);