电源功能无法正常工作

Dhr*_* Sb 2 c++ pow c++14

int n;
n = 2;
int d;
d = pow(10,n);
cout<<d<<endl;
Run Code Online (Sandbox Code Playgroud)

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

MSa*_*ers 7

很可能是一个四舍五入的问题.

某些实现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.