Kursus Python / Memahami int, float, konversi angka, dan Decimal
Dalam Python, int mewakili bilangan bulat, sedangkan float menyimpan bilangan pecahan dalam representasi biner. Untuk jumlah yang membutuhkan aturan desimal tepat, gunakan satuan bulat atau Decimal dan tetapkan satuan serta aturan pembulatannya secara jelas.
Baca operator aritmetika dengan tepat
| Ekspresi | Operasi | Hasil |
|---|---|---|
7 / 2 |
Pembagian | 3.5 |
7 // 2 |
Pembagian dengan pembulatan ke bawah | 3 |
7 % 2 |
Sisa pembagian | 1 |
2 ** 3 |
Pemangkatan | 8 |
Pembagian // membulatkan hasil ke arah negatif tak hingga, bukan memotong bagian pecahan ke arah nol. Karena itu, -7 // 2 menghasilkan -4, sedangkan int(-3.5) menghasilkan -3. Gunakan tanda kurung jika urutan operasi tidak langsung jelas. Bilangan bulat Python tidak dibatasi pada rentang tetap 32 bit, walaupun perhitungan tetap dibatasi oleh memori dan sumber daya yang tersedia.
Makna pembagian, sisa, dan pemangkatan dijelaskan dalam referensi operator aritmetika Python. Perbedaan pembagian ke bawah dan pemotongan menjadi penting ketika masukan dapat bernilai negatif.
Jalankan perbandingan tipe angka
Gunakan Python 3.12 atau lebih baru dan simpan kode lengkap berikut sebagai numeric_demo.py dengan encoding UTF-8. Modul decimal termasuk pustaka standar, sehingga tidak perlu dipasang melalui pip. Dari folder latihan, jalankan python numeric_demo.py dengan interpreter proyek; di luar lingkungan virtual, nama perintah macOS atau Ubuntu dapat berupa python3.
from decimal import Decimal
print(7 / 2, 7 // 2, 7 % 2)
print(-7 // 2, int(-3.5))
print(0.1 + 0.2 == 0.3)
print(Decimal("0.1") + Decimal("0.2"))
price_won = 3500
print(price_won * 3)
Keluaran yang diharapkan:
3.5 3 1
-4 -3
False
0.3
10500
Baris pertama membandingkan tiga operasi pada nilai positif. Baris kedua memperlihatkan perbedaan arah pembulatan. Baris ketiga menghasilkan False karena penjumlahan pecahan biner tersebut tidak sama persis dengan representasi 0.3. Baris keempat memakai dua nilai Decimal dari string dan menghasilkan 0.3. Baris terakhir mengalikan harga bulat 3500 dengan jumlah barang 3, sehingga hasilnya 10500.
Pilih konversi dan aturan ketelitian
int("3500") membaca string bilangan bulat. int("3.5") gagal, sedangkan int(3.5) memotong pecahan dari nilai float. float("3.5") menghasilkan float. Jadi, mengubah string dan mengubah nilai numerik tidak selalu mengikuti aturan yang sama. Pada contoh input dan konversi jumlah pengeluaran, posisi pemanggilan int() adalah batas antara teks pengguna dan angka.
Banyak pecahan desimal tidak dapat disimpan secara tepat sebagai pecahan biner dengan jumlah bit terbatas. Penjelasan resmi keterbatasan floating-point menerangkan mengapa hal ini terjadi. Memformat 0.1 + 0.2 dengan format(..., ".2f") menghasilkan string "0.30", tetapi hanya mengubah tampilannya, bukan nilai float yang disimpan.
Decimal mendukung aritmetika desimal. Buat nilai dari teks desimal, misalnya Decimal("0.1"). Membuat Decimal(0.1) justru membawa representasi float yang sudah ada ke nilai Decimal. Gunakan referensi decimal saat menentukan presisi dan pembulatan yang dibutuhkan perhitungan.
Decimal bukan jaminan bahwa semua hasil pembagian selalu tepat tanpa batas. Konteks perhitungan memiliki presisi dan aturan pembulatan; pembagian seperti satu dibagi tiga memerlukan pembulatan pada presisi yang terbatas. Untuk aturan dua angka desimal, tentukan kuantisasi dan mode pembulatan secara sengaja, bukan mengandalkan format tampilan saja.
Periksa batas dalam perhitungan jumlah
Pengeluaran dalam satuan won utuh dapat disimpan sebagai bilangan bulat, misalnya 3500. Jika data memakai mata uang lain atau satuan pecahan, simpan juga mata uang dan skala nilainya. Tipe angka tidak menetapkan sendiri apakah nilai negatif boleh digunakan, kapan hasil dibulatkan, atau bagaimana unit dikonversi.
- Bandingkan
-7 // 2dengan-7 / 2. Hasilnya-4dan-3.5, karena operasi pertama membulatkan ke bawah. - Pada contoh, ubah pembagi di baris pertama dari
2menjadi0. Program menghasilkanZeroDivisionErrordan tidak melanjutkan baris berikutnya. Kembalikan pembagi ke2untuk memulihkan program. - Coba konversi
int("3500 KRW")secara terpisah. Konversi gagal denganValueErrorkarena string memuat satuan. Putuskan format masukan yang diterima sebelum menghapus karakter yang mungkin bermakna. - Ubah harga
3500menjadi4000. Baris terakhir menjadi12000. Kembalikan ke3500dan pastikan seluruh keluaran kembali sama dengan contoh.
Gunakan hasil percobaan untuk membedakan tiga keputusan: bagaimana masukan diubah menjadi angka, bagaimana angka dihitung, dan bagaimana hasil ditampilkan. Menyatukannya tanpa aturan jelas dapat menyembunyikan pecahan yang terpotong atau perbedaan pembulatan.




