我有以下代码:
#include <stdio.h>
int main(){
int power, n = 3;
power = pow(10, n - 1);
printf("power is %d", power);
return 0;
}
输出是99.但它应该是100.当n = 3,5或8时发生这种事件。为什么?
Pow是double
的功能,而不是int
eger。因此,它具有小的舍入误差,并且可能计算99.999999996375左右。将其分配给int
时,会丢失小数点后面的所有数据。
使用双精度值,打印双打(”%lf”
),它会起作用。