我试图编写一个程序,用while
循环计算x^n的值:
#include <stdio.h>
#include <math.h>
int main()
{
float x = 3, power = 1, copyx;
int n = 22, copyn;
copyx = x;
copyn = n;
while (n)
{
if ((n % 2) == 1)
{
power = power * x;
}
n = n / 2;
x *= x;
}
printf("%g^%d = %f\n", copyx, copyn, power);
printf("%g^%d = %f\n", copyx, copyn, pow(copyx, copyn));
return 0;
}
直到n
的值为15,我创建的函数和pow
函数(math.h
)的答案给出了相同的值;但是,当n
的值超过15时,它开始给出不同的答案.
我不明白为什么答案不同.是我用错误的方式写的函数,还是其他原因?