Ini bukan bug dengan baik, tetapi karena cara komputer melakukan operasi floating point. Ada presisi terbatas yang dapat digunakan komputer mana pun, sehingga terkadang Anda akan melihat anomali seperti ini. Meskipun dimungkinkan untuk menulis perangkat lunak yang dapat menangani hal ini, akan membutuhkan lebih banyak waktu perhitungan dan secara drastis meningkatkan persyaratan memori.
Jika Anda melihatnya, e ^ (i * pi) mengembalikan -1 + 1.2x10 ^ -16i. Seperti yang Anda lihat, komponen imajiner sangat kecil (sebagian besar akan menganggapnya dapat diabaikan, karena 16 kali lipat lebih kecil dari bagian sebenarnya). Komponen ini diperkenalkan oleh kesalahan pembulatan dan ketepatan, baik dengan penghitungan itu sendiri, maupun nilai pi yang disimpan karena tidak rasional (lihat tautan ini untuk contoh lain yang berhubungan dengan bilangan irasional).
Jika kesalahan perhitungan ini tidak dapat diterima, Anda harus melihat ke dalam paket matematika yang melakukan analisis simbolik daripada numerik, atau yang menggunakan angka floating point presisi tinggi . Peringatan ini adalah bahwa mereka akan secara drastis meningkatkan kebutuhan memori Anda, dan analisis simbolis seringkali jauh lebih lambat. Juga, angka presisi yang lebih tinggi hanya akan mengecilkan besarnya kesalahan pembulatan / presisi, bukan menghilangkannya.