Це не помилка ні з одним, але через те, як комп'ютери виконують операції з плаваючою точкою. З якою комп’ютером може працювати точність, обмежена точність, і іноді ви побачите подібні аномалії. Хоча можна писати програмне забезпечення, яке може впоратися з цим, це займе набагато більше часу на обчислення та суттєво збільшить потреби в пам'яті.
Якщо ви подивитесь на це, то e ^ (i * pi) повертає -1 + 1.2x10 ^ -16i. Як бачите, уявна складова надзвичайно мала (більшість вважає це мізерно малою, оскільки це на 16 порядків менше, ніж реальна частина). Цей компонент вводиться помилками округлення та точності, як із самим обчисленням, так і із збереженим значенням pi, оскільки це нераціонально (див. Це посилання для іншого прикладу, що стосується ірраціональних чисел).
Якщо ця помилка обчислення неприйнятна, слід заглянути в математичні пакети, які виконують символічний, а не числовий аналіз, або ті, що використовують високоточні числа з плаваючою комою . Ці застереження в тому, що вони різко збільшать ваші потреби в пам'яті, а символічний аналіз часто набагато повільніше. Також більш високі показники точності просто зменшать величину помилок округлення / точності, а не усунуть їх.