首页 > 解决方案 > pow(x,y) 适用于浮点数,但不适用于整数

问题描述

我写了一个程序来计算前五个数字的立方:

#include <stdio.h>
#include <math.h>
int main() {
  for(int i = 1; i <= 5; i++) {
    printf("%d ",pow(i,3));
  }
}

这不起作用。它打印:

0 0 0 0 0

但是,使用 float 它可以工作:

#include <stdio.h>
#include <math.h>
int main() {
  printf("%f\n",pow(3,3));
  for(float i = 1; i <= 5; i++) {
    printf("%f ",pow(i,3));
  }
}

并打印:

1.000000 8.000000 27.000000 64.000000 125.000000

整数有什么问题?为什么这只适用于浮点数?

标签: cfloating-pointinteger

解决方案


首先 pow(i,j) 返回双精度值,而不是整数。试试这个代码

int main() {
     for(int i = 1; i <= 5; i++) {
         printf("%f ",pow(i,3));
     }
return 0;
}

推荐阅读