如果无法使用分数,有人可以解释解决2 ^ 2.2之类的步骤,例如无限精度计算吗?
答案 0 :(得分:2)
在一般情况a^b
中,^
是取幂(非XOR),a和b是实数:
pow(a,b) = exp( b * log(a) )
exp(x) = sum[n = 0->inf] x^n / n!
ln(x) = sum[n = 1->inf] (x-1)^n / n
x^n = n == 0 ? 1 // unless x == 0
(n%2==0) ? x^(n/2) * x^(n/2)
othewrwise x*x^(n-1)
// faster than loop for large n,
这需要以一定精度终止的两个系列,但取幂只有自然数。
你还必须处理a和b(a^-b = 1/(a^b)
)的符号,零值等。
答案 1 :(得分:0)
pow(x,y)
(即x^y
)的典型实现涉及计算exp(y*log(x))
。没有涉及分数。