Мне нужно написать функцию мощности в Python, которая работает с реальным базовым и реальным показателем.Функция мощности для реального базового и реального экспонентов
а^б & & а, б ∈ 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
Любая помощь приветствуется.
вопрос, который приходит на ум, это "почему?" Какое понимание достигается, если вы не используете '**' operator –
, самая худшая ошибка в вашем коде состоит в том, что рациональная часть для '2.5' равна' 5', а рациональная часть для '2.500000001' -' 500000001', не совсем какая вы ожидаете. –
Итак, что случилось с '**' оператором? –