电源功能未按预期工作

Power function not working as expected

int n;
n = 2;
int d;
d = pow(10,n);
cout<<d<<endl;

它显示 99 而不是 100。 我已经包括 math.h

很可能是四舍五入问题。

std::pow 的某些实现具有整数参数的特殊情况。其他人只依赖基础数学。例如,pow(x,y) == pow(2, y*log2(x))。实现使用此规则的典型原因是它在内部以 2 为基数表示浮点数。但是 log2(x) 可能会遇到舍入问题。

在您的情况下,log2(10) 将是 3.3219280948873623478703194294894。这意味着 pow(10.0, 2.0) 可以在幕后计算为 pow2(6.6438561897747246957406388589788) = 64 * pow2(0.6438561897747246957406388589788)。后一项很可能向下舍入到略低于正确 1.5625.

的值