Pecahan di Python: Bekerja dengan Bilangan Rasional Secara Sempurna
Salah satu tantangan dalam komputasi adalah merepresentasikan bilangan pecahan secara akurat. Jika Anda pernah mencoba kalkulasi sederhana seperti 0.1 + 0.2 di banyak bahasa pemrograman, Anda mungkin terkejut melihat hasilnya bukanlah 0.3, melainkan sesuatu seperti 0.30000000000000004. Ini terjadi karena keterbatasan dalam cara komputer menyimpan bilangan desimal (float).
Bagi mahasiswa matematika yang membutuhkan presisi mutlak, masalah ini tentu tidak bisa diterima. Untungnya, Python menyediakan solusi yang elegan melalui modul bawaan bernama fractions, yang memungkinkan kita bekerja dengan bilangan rasional secara matematis murni.
Masalah Presisi pada Bilangan float
Mari kita lihat langsung masalah ketidakakuratan float.
print(0.1 + 0.2) # Output: 0.30000000000000004
print(0.1 + 0.2 == 0.3) # Output: False Masalah ini muncul karena komputer menggunakan sistem biner (basis 2) untuk menyimpan bilangan, dan beberapa pecahan desimal (basis 10) tidak dapat direpresentasikan secara sempurna dalam biner. Di sinilah modul fractions datang sebagai penyelamat.
Mengenal Modul fractions âž—
Modul fractions memungkinkan kita untuk membuat objek Fraction yang menyimpan bilangan sebagai pasangan pembilang dan penyebut. Untuk menggunakannya, kita perlu mengimpor kelas Fraction dari modul tersebut.
from fractions import Fraction
# Membuat objek Fraction dari dua bilangan bulat
pecahan_satu = Fraction(1, 3) # Merepresentasikan 1/3
print(pecahan_satu)
# Membuat objek Fraction dari string
pecahan_dua = Fraction("2/5") # Merepresentasikan 2/5
print(pecahan_dua)
# Python otomatis menyederhanakan pecahan
pecahan_tiga = Fraction(8, 16) # Akan menjadi 1/2
print(pecahan_tiga)Operasi Aritmetika dengan Pecahan
Kelebihan utama menggunakan objek Fraction adalah kemudahannya dalam operasi aritmetika. Python akan menangani semua kalkulasi, termasuk menyamakan penyebut dan menyederhanakan hasil (mencari FPB), secara otomatis.
from fractions import Fraction
a = Fraction(1, 2) # 1/2
b = Fraction(3, 4) # 3/4
print(f"{a} + {b} = {a + b}") # Hasil: 5/4
print(f"{b} - {a} = {b - a}") # Hasil: 1/4
print(f"{a} * {b} = {a * b}") # Hasil: 3/8
print(f"{a} / {b} = {a / b}") # Hasil: 2/3Mengakses Pembilang dan Penyebut
Anda dapat dengan mudah mengakses komponen dari objek Fraction menggunakan atribut .numerator (pembilang) dan .denominator (penyebut).
from fractions import Fraction
hasil_bagi = Fraction(2, 3)
print(f"Pembilang: {hasil_bagi.numerator}") # Hasil: 2
print(f"Penyebut: {hasil_bagi.denominator}") # Hasil: 3Studi Kasus: Menjumlahkan Deret Pecahan
Bayangkan Anda ingin menghitung jumlah deret 1/1 + 1/2 + 1/3 + ... + 1/10. Menggunakan float akan menghasilkan nilai aproksimasi, tetapi dengan fractions, kita bisa mendapatkan hasil pecahan yang eksak.
from fractions import Fraction
jumlah_total = Fraction(0, 1) # Mulai dari 0
for i in range(1, 11):
jumlah_total += Fraction(1, i)
print(f"Jumlah deret 1/1 + ... + 1/10 adalah: {jumlah_total}")
# Output: Jumlah deret 1/1 + ... + 1/10 adalah: 7381/2520Kesimpulan
Modul fractions adalah alat yang sangat kuat bagi siapa saja yang bekerja dengan matematika di Python. Ia menjamin presisi absolut untuk kalkulasi yang melibatkan bilangan rasional, menghilangkan sepenuhnya masalah ketidakakuratan yang melekat pada bilangan float. Dengan ini, Python membuktikan dirinya bukan hanya sebagai bahasa pemrograman umum, tetapi juga sebagai kalkulator simbolik yang andal untuk kebutuhan matematis murni.

