我正在用c制作一个新项目,功能"不起作用".我该怎么做才能解决?
它的功能实际为2到10的幂,但10的功率为1
#include <stdio.h>
#include <math.h>
int main(){
int res=2;
int base=10;
int exp=2;
res= pow(base,exp);
printf("%d",res);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我希望输出为100,但输出为99
pow(10, 2)产生一个略低于100的值,因为它是一个低质量的实现pow,并没有返回一个好的结果.
pow是一个难以实现的功能,并且所有商业实现产生许多在某种程度上不准确的结果.但是,良好的实现会努力使某些情况完全正确,包括结果恰好是整数的情况(或者,就此而言,是合理的).
在pow(base, exp),如果exp在编译时已知为两个,则base*base应该使用它 - 它快速准确并且避免了pow问题.如果exp在编译时不知道是两个,则代码必须设计为容忍不准确pow或必须进行其他调整.(可以对有关情况或要求的更具体的问题提供进一步的建议.)