Проблема в том, что -
имеет более низкий приоритет, чем **
, поэтому выражение -1.5 ** 0.44
фактически анализируется, как если бы оно было -(1.5 ** 0.44)
.
Чтобы получить правильный результат, вы должны напишите (-1.5) ** 0.44
.
>>> -1.5 ** 0.44
-1.195308902228074
>>> -(1.5 ** 0.44)
-1.195308902228074
>>> (-1.5) ** 0.44
(0.22397855343551604+1.1741366953411416j)
Результат -1.195308902228074
на самом деле неверен математически, но если вы действительно хотите получить результат некорректный после присвоения чисел переменным, вы можете использовать abs
и math.copysign
:
>>> a = -1.5
>>> b = 0.44
>>> import math
>>> math.copysign(abs(a) ** b, a)
-1.195308902228074