我有一个问题,也许这很愚蠢。我写了代码来计算求幂:
#include<stdio.h>
int i=0;
float power(int a,int b);
main()
{ int base,exp;
printf("Base:\n");
scanf("%d",&base);
printf("Exp:\n");
scanf("%d",&exp);
power(base,exp);
system("pause");
}
float power(int a,int b)
{ float result=1;
for (i=0;i<b;i++)
{
result=result*a;
}
printf("result = %lf \n",result);
}
让我感到困惑的是,我给出的输入 base=2 和 exp=100 并且输出是正确的。我不明白的是,即使浮点类型是 4byte=32 位,程序如何计算正确的数字,其中表示 float(result) 变量可以得到的最大数是 2^32-1<<2^100