我需要在Python中编写一个power函数,它可以使用真实的基数和实数。
a ^ b&& a,b∈R
我陷入了困境:
def power_real_numbers(base, exp):
if isinstance(exp, int):
return power_bin_recursive(base, exp)
else:
integer = int(exp)
rational = int(str(exp).split('.')[1])
#power_bin_recursive() works fine
intval = power_bin_recursive(base, integer)
ratval = math.sqrt(rational)
if exp == 0:
return 1
elif exp < 0:
val = intval / ratval
else:
val = intval * ratval
return val
这只适用于真正的基础。使用实数exp,数字不同,例如:
7.5 ^ 2.5 = 154.046969298, output by power_real_numbers is 125.778823734
7.5 ^ 0.5 = 2.73861278753, output by power_real_numbers is 2.2360679775
7.5 ^ -2.5 = 0.00649152660747, output by power_real_numbers is 0.00795046392
感谢任何帮助。
答案 0 :(得分:0)
要拆分浮点数的整数和小数部分,请使用math.modf
:
>>> import math
>>> fractional, integer = math.modf(5.5)
>>> fractional
0.5
>>> integer
5.0
答案 1 :(得分:0)
您使用错误的条件来计算实数指数。您的解决方案可以满足您的结果。
真: 7.5 ^ 2.5 = 154.046969298
您的计划: 7.5 ^ 2 * sqrt(5)= 125.778823734