电源功能未按预期工作
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
.
的值
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
.