功能的双电源没有math.h中
答
int main(){
int a,b,i,pow=1;
scanf("%d %d",&a,&b);
for(i=1;i<=b;i++)
pow=pow*a;
printf("%d",pow);
}
变化你的数据类型根据你的需要
+0
以“4.3^2.5”为例,即使在我们声明b为double之后,我们也可以根据你的说法使用for(i = 1; i
答
这是一个粗略的概要。
pow(x, y)
在数学上等同于exp(log(x)*y)
,区别和特殊情况除外。可以用系列来近似log(x)
和exp(x)
。
泰勒级数可以从零开始计算。高级实现使用事先为特定情况预先设计的极小极大多项式的变体。
通常,在计算log
时,我们将参数的指数部分与小数部分分开,然后使用多项式近似对数,然后为指数部分加上对数。
计算exp
时,我们将整数和小数部分分开,并乘以它们中的每一个的exp
。
对于使用基数为2的浮点数,通常使用基数为2的对数和指数。然后指数e(代表2 e)的对数简单地是e。
因为当你这样做时,你想操纵浮点值的指数部分和有效部分,你必须访问它们的编码。 math.h
为此提供例如frexp
和ldexp
的例程。要做到这一点没有math.h
,你需要访问对象的字节,这是另一个堆栈溢出问题的主题。
创建大致正确版本的pow
并不难。计算错误和证明它们的界限需要大量的工作,并且设计多项式和其他计算以减少错误通常是困难的。
定义你自己的函数来寻找双倍的力量。找出预定义的pow()如何工作和分析。 – achal
我相信有几个算法可以做到这一点。你有什么尝试?你的尝试是如何工作的?还是不行?也许你应该花一些时间[阅读如何提出好问题](http://stackoverflow.com/help/how-to-ask),并学习如何创建[最小,完整和可验证示例](http ://stackoverflow.com/help/mcve)?也许你需要[学习如何调试你的程序](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)? –
[浮点实现pow()函数的最有效方式]的可能重复(https://stackoverflow.com/questions/2664445/the-most-efficient-way-of-implementing-pow-function-in-浮点数) – OznOg