Belajar dengan membaca secara berurutan

Bilangan dan float

Pelajari tipe numerik Python dari dasar. Cakup int vs float, operator aritmetika, pembagian, dan presisi float.

Python punya dua tipe angka

Python punya dua tipe angka utama untuk bekerja dengan bilangan: int untuk bilangan bulat dan float untuk bilangan desimal.

Keduanya angka, jadi kamu bisa melakukan semua operasi dasar — penjumlahan, pengurangan, perkalian, pembagian dan sisa bagi — dengan salah satunya.

Tetapi penulisan dan ketepatannya berbeda, jadi kamu pilih yang sesuai untuk tiap situasi.

Bagaimana int dan float membagi tugas
25(hanya digit)tipe intbilangan bulat<class 'int'>175.5(ada .)tipe floatbilangan desimal<class 'float'>tipe ditentukantype()tipe ditentukantype()

Tulis tanpa . dan kamu dapat int.

Tulis dengan . dan kamu dapat float.

Apapun pilihannya, type() memberitahumu mana yang sedang kamu pegang.

Walau nilainya tampak seperti bilangan bulat, menambahkan .0 seperti 3.0 mengubahnya menjadi float. Sebaliknya, cukup menulis 175 tetap int.

Angka negatif bekerja sama — -5 adalah int, -5.5 adalah float.

# int (bilangan bulat)
age = 25
print(type(age))      # <class 'int'>

# float (bilangan desimal)
weight = 175.5
print(type(weight))   # <class 'float'>

# "3" yang sama tapi tipe berbeda tergantung cara penulisan
print(type(3))        # <class 'int'>
print(type(3.0))      # <class 'float'>

# Angka negatif juga begitu
print(type(-10))      # <class 'int'>
print(type(-10.5))    # <class 'float'>

Periksa perbedaan antara int dan float di terminal.

① Buat count = 7 dan pi = 3.14, lalu tampilkan nilai serta tipenya dengan print().

② Tulis print(type(3.0)) untuk melihat sendiri bahwa 3 dan 3.0 punya tipe berbeda.

Python Editor

Jalankan kode untuk melihat output

Tur cepat operator

Ada 7 operator yang kamu gunakan untuk operasi numerik. Empat operator dasar + - * / bekerja seperti bahasa lain, tetapi // (pembagian bulat), % (sisa bagi) dan ** (pangkat) sering muncul di Python, jadi layak dipelajari dengan baik.

OperatorArtiContohHasil
+Penjumlahan10 + 313
-Pengurangan10 - 37
*Perkalian10 * 330
/Pembagian (selalu float)10 / 33.3333...
//Pembagian bulat (memotong desimal)10 // 33
%Sisa bagi10 % 31
**Pangkat2 ** 101024

/ mengembalikan float bahkan antara int

10 / 2 menghasilkan 5.0 (float), bukan 5.

/ di Python dirancang untuk selalu mengembalikan float, jadi hasilnya float walau kedua operan adalah int.

Jika kamu ingin hasil berupa bilangan bulat, gunakan //.

# Operasi dasar
print(10 + 3)    # 13
print(10 - 3)    # 7
print(10 * 3)    # 30

# Pembagian selalu mengembalikan float
print(10 / 3)    # 3.3333333333333335
print(10 / 2)    # 5.0  (tetap float walau pembagiannya habis)

# Pembagian bulat (memotong) dan sisa bagi
print(10 // 3)   # 3
print(10 % 3)    # 1

# Pangkat: a ** b berarti "a pangkat b"
print(2 ** 10)   # 1024
print(3 ** 2)    # 9
print(2 ** 0.5)  # 1.4142135623730951  (dipakai seperti akar kuadrat)

Hitung seconds = 365 menjadi berapa menit dan berapa detik.

① Gunakan // untuk menampilkan "berapa menit".

② Gunakan % untuk menampilkan "berapa detik sisanya".

③ Gunakan `** untuk menampilkan 2 pangkat 8 (256).

④ Tampilkan 10 / 2 dan pastikan hasilnya float (5.0) walau pembagiannya habis.

Python Editor

Jalankan kode untuk melihat output

Operator penugasan gabungan (+= / -= dll.)

Pola seperti "x = x + 1" — di mana kamu melakukan sesuatu pada sebuah variabel lalu menyimpan hasilnya kembali ke variabel itu sendiri — sering muncul.

Kamu bisa menyingkatnya menjadi "x += 1", dan bentuk singkat ini disebut operator penugasan gabungan.

Setiap operator `+ - / // % * punya bentuk gabungannya.

Cara kerja penugasan gabungan
x += 3x = x + 313x -= 3x = x - 37x *= 3x = x * 330x **= 2x = x ** 2100diperluashasildiperluashasildiperluashasildiperluashasil

Bentuk singkat adalah cara menulis satu baris untuk ide "lakukan sesuatu pada dirimu sendiri lalu simpan kembali".

Di dalamnya, ia bekerja persis seperti bentuk panjang di sebelah kanan.

Contohnya, inilah yang dilakukan tiap operator saat x = 10.

score = 10

score += 5      # 10 + 5 -> 15
print(score)    # 15

score *= 2      # 15 * 2 -> 30
print(score)    # 30

score -= 7      # 30 - 7 -> 23
print(score)    # 23

# Juga bekerja dengan float
weight = 60.0
weight += 1.5
print(weight)   # 61.5

Perbarui HP sebuah karakter yang dimulai dari hp = 100, pakai penugasan gabungan.

① Kurangi hp sebesar 30 lalu tampilkan.

② Lalu gandakan hp dan tampilkan.

③ Lalu ganti hp dengan sisa hp dibagi 5, lalu tampilkan.

Python Editor

Jalankan kode untuk melihat output

Mencampur int dan float dalam operasi

Ketika kamu mencampur int dan float, hasilnya selalu float. Itu karena Python otomatis menaikkan ke tipe dengan ketepatan lebih tinggi.

Seperti disebut di atas, / (pembagian) mengembalikan float bahkan antara int, sedangkan // (pembagian bulat) mengembalikan int ketika kedua operan adalah int.

Aturan tipe untuk hasil operasi
int + int-> intint + float-> floatint / int-> float(selalu)hasiltipe naikpengecualian

int + int = int.

Tetapi / selalu mengembalikan float.

Jika salah satu sisi adalah float, hasilnya float.

# int dengan int tetap int
print(10 + 3)        # 13   -> int
print(type(10 + 3))  # <class 'int'>

# Jika salah satu sisi adalah float, hasilnya float
print(10 + 3.0)         # 13.0
print(type(10 + 3.0))   # <class 'float'>

# / mengembalikan float bahkan antara int
print(10 / 2)           # 5.0
print(type(10 / 2))     # <class 'float'>

# // tetap int ketika keduanya int
print(10 // 3)          # 3
print(type(10 // 3))    # <class 'int'>

# // menjadi float jika salah satu sisi float
print(10 // 3.0)        # 3.0
print(type(10 // 3.0))  # <class 'float'>

Coba tebak tipe hasilnya, lalu periksa.

① Tampilkan hasil dan tipe dari 7 + 2.

② Tampilkan hasil dan tipe dari 7 + 2.0.

③ Tampilkan hasil dan tipe dari 10 / 5 (perhatikan bahwa hasilnya float walau pembagiannya habis).

Python Editor

Jalankan kode untuk melihat output

float punya ketepatan terbatas

Komputer menyimpan float sebagai pendekatan biner. Akibatnya, bahkan perhitungan yang tampak sederhana pun bisa menghasilkan kesalahan kecil.

Contoh di bawah ini adalah "jebakan float" klasik — semua pemula tersandung di sini pada suatu titik.

Dari mana kesalahan float berasal
0.1(ditulis di basis 10)0.00011001100...(berulang di basis 2)dipotong ke bit terbatas~= pendekatan 0.10.1 + 0.2hitung pada pendekatan0.30000000000000004(ada kesalahan)ke basis 2simpanjalankanhasil

Lihat sendiri kesalahannya.

① Tampilkan 0.1 + 0.2 (pastikan hasilnya bukan 0.3).

② Tampilkan 0.1 + 0.1 + 0.1.

③ Tampilkan 0.1 + 0.2 == 0.3 (tidak akan True).

Python Editor

Jalankan kode untuk melihat output

Gunakan Decimal saat butuh aritmetika eksak

Dalam situasi di mana bahkan kesalahan kecil pun tidak dapat diterima — seperti menghitung uang — kamu bisa melakukan aritmetika desimal eksak menggunakan tipe Decimal dari pustaka standar. Kita tidak akan membahasnya di artikel ini, tetapi ingatlah: "float adalah pendekatan" dan "ada alat lain untuk aritmetika eksak".

Konversi tipe dengan int() dan float()

Untuk berpindah antar tipe numerik, gunakan fungsi bawaan int() dan float().

Satu hal yang perlu diperhatikan: int() memotong bagian desimal — bukan membulatkan. Jadi memberikan 3.9 ke int() menghasilkan 3, bukan 4. Untuk nilai negatif, ia membulatkan ke arah 0, jadi -3.9 menjadi -3, bukan -4.

Konversi dengan int() dan float()
3.9floatint()memotong3int5intfloat()tambah .05.0floatditeruskanhasilditeruskanhasil
# float -> int adalah "memotong" (BUKAN membulatkan!)
print(int(3.9))     # 3
print(int(3.1))     # 3
print(int(-3.9))    # -3   (membulatkan ke arah 0)

# int -> float hanya menambah .0
print(float(5))     # 5.0
print(float(-2))    # -2.0

# Menggunakan konversi melalui variabel
a = 3.9
a = int(a)
print(a, type(a))       # 3 <class 'int'>

b = 5
b = float(b)
print(b, type(b))       # 5.0 <class 'float'>

Lihat bagaimana int() bekerja.

① Tampilkan hasil dari int(7.8) (tidak membulatkan).

② Tampilkan hasil dari int(-7.8) (lihat ke arah mana ia membulatkan di sisi negatif).

③ Tampilkan hasil dan tipe dari float(10).

Python Editor

Jalankan kode untuk melihat output

Di artikel ini, kamu telah belajar:

  • Perbedaan antara int dan float
  • Pangkat dengan "**" dan penugasan gabungan (+= dan teman-temannya)
  • Perbedaan tipe hasil antara "/" (pembagian) dan "//" (pembagian bulat)
  • Masalah ketepatan float
  • Konversi tipe dengan int() / float()
QUIZ

Cek Pemahaman

Jawab setiap pertanyaan satu per satu.

Soal 1Apa yang ditampilkan kode ini?
print(type(10 / 2))

Soal 2Apa yang ditampilkan kode ini?
x = 10
x **= 3
print(x)`

Soal 3Apa yang ditampilkan kode ini?
print(int(-3.9))