(Частичный ответ на пересмотренный вопрос.)
Теоретически, результат должен быть -1
, но на практике теория слегка ошибочна.
Блок cmath
использует переменные с плавающей запятой для своих вычислений - одно значение с плавающей запятой для действительной части комплексного числа и другое значение с плавающей запятой для мнимой части. Поэтому устройство испытывает ограничения математики с плавающей запятой. Подробнее об этих ограничениях см. Канонический вопрос Не нарушена ли математика с плавающей запятой? .
Короче говоря, значения с плавающей запятой обычно представляют собой простые приближения к реальным значениям. Значение cmath.pi
на самом деле не является пи, это просто наилучшее приближение, которое будет соответствовать единице с плавающей запятой многих компьютеров. Таким образом, вы на самом деле не рассчитываете e^(pi*I)
, только приблизительное значение. Возвращаемое значение имеет точную, правильную действительную часть, -1
, что несколько удивляет меня. Мнимая часть «должна быть» нулевой, но фактический результат соответствует нулю до 15 десятичных знаков или более 15 значащих цифр по сравнению с начальным значением. Это обычная точность для плавающей запятой.
Если вам требуются точные ответы, вам не следует работать со значениями с плавающей запятой. Возможно, вам следует попробовать алгебраическое решение, такое как модуль sympy
.
(Ниже был мой первоначальный ответ, который относился к предыдущей версии вопроса, где результатом было сообщение об ошибке.)
Сообщение об ошибке показывает, что вы не набрали то, что думали, что набрали. Вместо cmath.exp
на внешней стороне выражения вы набрали math.exp
. Версия math
экспоненциальной функции ожидает значение с плавающей запятой. Вы дали ему комплексное значение (cmath.pi * cmath.sqrt(-1)
), поэтому Python решил, что вы хотите преобразовать это комплексное значение в число с плавающей точкой.
Когда я набираю выражение, которое вы даете в верхней части вашего вопроса, с cmath
, набранным правильно, я получаю результат
(-1+1.2246467991473532e-16j)
, что очень близко к желаемому значению -1
.