Python вычисление отрицательных сил странный результат - PullRequest
0 голосов
/ 20 марта 2019

Кто-нибудь знает, почему результаты приведенных ниже расчетов дают разные результаты, поскольку они должны быть одинаковыми.

(-0.99)**(-0.99)

возвращает (-1.0095011228760993-0.03172485085856595j)

и

-0.99**-0.99

возвращает -1.0099994966583417

Ответы [ 2 ]

1 голос
/ 20 марта 2019

Хорошо, давайте соберем частичные ответы, которые есть в другом месте, а также предоставим более полный контекст.

Прежде всего, предположение, что это должны быть эквивалентные выражения, неверно.-x**y это не (-x)**y, а скорее -(x**y).

По общему признанию это странно.Если вы напишите -2 на бумаге, вы, вероятно, будете думать о - как о части числа, а не как о операторе, чей приоритет может быть поставлен под сомнение.И все же, если вы напишите -2 2 , стандартно будет сказать, что это -4, тогда как (-2) 2 - это, конечно, 4.

Вотстатья на эту тему: http://mathforum.org/library/drmath/view/61633.html

В любом случае, это короткий ответ о том, почему они не совпадают.Учитывая это, это просто вопрос понимания каждого выражения.

-.99**-.99

можно записать

-1 * (.99**-.99)
-1 / (.99**.99)

Знаменатель может быть прочитан как «сотый корень от .99 до 99-й степени».", а затем нужно просто выполнить расчет боли в заднице.

С другой стороны,

(-0.99)**(-0.99)

также можно упростить, но в конечном итоге мы 'собираемся взять четный корень из отрицательного числа;поэтому ответом должно быть комплексное число.

1 голос
/ 20 марта 2019

(-0.99)**(-0.99) yields a complex number, while -0.99**-0.99 yields a float.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...