← semua materi
19:00 Tips · 15 Oct 2026 · 15:01

Kenapa 0.1 + 0.2 Tidak Sama dengan 0.3?

Coba buka console browser atau Python, ketik:

>>> 0.1 + 0.2
0.30000000000000004

Bukan bug. Bukan salahmu. Komputer memang tidak bisa menyimpan angka 0.1 dengan tepat.


Masalahnya: basis bilangan

Manusia menghitung pakai basis 10. Komputer pakai basis 2 (biner).

Di basis 10, angka seperti 1/3 tidak bisa ditulis sempurna — hasilnya 0.3333... terus tanpa habis. Kamu harus berhenti di suatu titik dan menerima pembulatan.

Masalah yang sama terjadi di basis 2, tapi korbannya beda. Di basis 10, yang "kotor" adalah pecahan dengan pembagi 3 (dan 7, 9, dst). Di basis 2, yang tidak bisa ditulis sempurna adalah angka yang penyebutnya bukan pangkat 2.

Karena komputer menyimpan angka dalam jumlah bit terbatas (format IEEE 754 double = 64 bit, sekitar 15-17 digit desimal presisi), pola berulang itu harus dipotong. Yang tersimpan adalah pendekatan terdekat dari 0.1, bukan 0.1 yang sebenarnya — meleset sekitar 5.5 × 10⁻¹⁷.

Sama halnya dengan 0.2. Dua-duanya sedikit meleset. Jumlahkan → error-nya ikut bertambah → hasilnya melewati 0.3 yang "benar" dan mendarat di 0.30000000000000004.

Kalau kamu bandingkan:

>>> 0.1 + 0.2 == 0.3
False

Bukan karena matematikanya salah. Karena apa yang kamu pikir "0.1" dan komputer simpan "0.1" itu dua angka yang beda tipis.


Fakta mengejutkan

Presisi error ini bukan hal sepele — pernah bikin uang hilang beneran.

Pada 25 Februari 1991, sebuah baterai Patriot missile di Dhahran, Arab Saudi, gagal menembak Scud Irak. 28 tentara Amerika tewas. Penyebabnya: sistem timing memakai bilangan real yang diakumulasi terus-menerus. Setiap jam, error-nya bertambah sekitar 0.000000095 detik. Terdengar tak berarti? Setelah sistem menyala 100 jam, error-nya jadi ~0.34 detik — cukup bikin radar meleset ratusan meter dari target. (Sumber: laporan GAO, 1992 — "Patriot Missile Defense: Software Problem Led to System Failure at Dhahran".)

Lebih sehari-hari: banyak bahasa pemrograman sengaja melarangmu salah. Contoh Python:

>>> 0.1 + 0.2
0.30000000000000004   # ini yang muncul di REPL
>>> print(0.1 + 0.2)
0.30000000000000004   # tetap sama, jujur apa adanya

Tapi kalau kamu tanya ke Python-nya sendiri:

>>> 0.1
0.1   # walau aslinya 0.1000000000000000055511151231257827...

Python menyembunyikan digit belakang saat menampilkan, tapi menyimpan semuanya. Jadi angka yang kamu lihat di layar sudah "dibulatkan untuk kenyamanan".


Takeaway yang gampang diingat

Komputer itu bukan kalkulator desimal. Dia kalkulator biner yang kebetulan bisa menampilkan angka desimal.

Aturan praktis: - Untuk uang / nilai yang harus tepat → jangan pakai float. Pakai integer (simpan dalam sen, bukan rupiah pecahan) atau Decimal di Python. - Untuk bandingkan float → jangan ==. Pakai toleransi: python abs(a - b) < 1e-9 # anggap sama kalau bedanya di bawah 1e-9 - Kalau butuh angka presisi tinggi di JS → pakai BigInt atau library decimal.js.

Rasa penasaran ini gratis dan cepat: coba 0.1 + 0.7, 0.1 * 3, atau (0.1 + 0.2) - 0.3 di console. Ada yang bikin kaget.