Python adalah salah satu bahasa pemrograman yang sering digunakan untuk melakukan berbagai macam perhitungan matematika, termasuk mengubah angka desimal menjadi pecahan. Mengubah angka desimal menjadi pecahan seringkali diperlukan dalam beberapa kasus, seperti saat kita ingin mempresentasikan hasil perhitungan sebagai pecahan atau ketika ada kebutuhan khusus dalam pemrosesan data. Dalam Python, terdapat beberapa metode yang dapat digunakan untuk mengubah angka desimal menjadi pecahan dengan mudah dan efisien. Dengan menggunakan metode-metode tersebut, kita dapat dengan cepat mengonversi angka desimal menjadi pecahan yang akurat dan sesuai dengan kebutuhan kita. Dalam artikel ini, kita akan menjelaskan secara detail tentang cara merubah angka desimal menjadi pecahan di Python dengan menggunakan beberapa metode yang telah disediakan oleh bahasa pemrograman ini.
Cara Mengubah Angka Desimal Menjadi Pecahan di Python

Beberapa waktu yang lalu, salah seorang adik tingkat kami menanyakan bagaimana cara mengubah angka desimal menjadi pecahan menggunakan Python. Tak lama kemudian, muncul pertanyaan serupa dari adik-adik tingkat lainnya. Ternyata, mereka sedang mempelajari dasar-dasar modul yang tersedia di Python. Output yang diinginkan adalah seperti ini: 0.5 = 1/2.

Cara untuk melakukan konversi ini cukup sederhana, kita dapat menggunakan modul fractions yang biasanya sudah tersedia pada library Python versi 2.6 ke atas. Modul fractions menyediakan class Fraction yang digunakan untuk mengolah bilangan rasional. Class ini menghasilkan output dalam bentuk pembilang dan penyebut (numerator/denominator).

Ada beberapa cara untuk membentuk pecahan di Python:

1. Menggunakan sepasang bilangan bulat (integer)
Kita dapat menggunakan sepasang bilangan bulat sebagai pembilang dan penyebut. Jika penyebutnya adalah 0, maka akan menghasilkan ZeroDivisionError. Class yang digunakan adalah fractions.Fraction(numerator, denominator).

Contoh penggunaan:
import fractions
f = fractions.Fraction(3, 9)
print(f)
Output: 3/9

2. Menggunakan pecahan lainnya
Kita juga dapat menggunakan pecahan yang sudah ada untuk membentuk pecahan lain dengan angka berbeda namun nilai yang tetap sama. Class yang digunakan adalah fractions.Fraction(other_fraction).

Contoh penggunaan:
import fractions
pecahan = “3/9”
f = fractions.Fraction(pecahan)
print(“%s = %s” %(pecahan, f))
Output: 3/9 = 1/3

3. Menggunakan bilangan desimal dan float
Pecahan juga dapat dibuat menggunakan bilangan desimal atau float. Outputnya akan berupa pecahan yang memiliki nilai yang sama dengan bilangan desimal tersebut. Class yang digunakan adalah fractions.Fraction(decimal) atau fractions.Fraction(float).

Contoh penggunaan untuk float:
import fractions
s = 1.23457
f = fractions.Fraction(s)
print(“%s = %s” %(s, f))
Output: 1.23457 = 5560008991962793/4503599627370496

Contoh penggunaan untuk bilangan desimal:
import fractions
s = 0.5
f = fractions.Fraction(s)
print(“%s = %s” %(s, f))
Output: 0.5 = 1/2

4. Menggunakan string
Cara terakhir adalah dengan menggunakan string. Pecahan dapat dibentuk dengan format [tanda] pembilang/penyebut, dimana tanda dapat berupa minus (-) atau positif (+). Class yang digunakan adalah fractions.Fraction(string).

Contoh penggunaan:
import fractions
s = [“0.5”, “1.1”, “-3.9”]
for i in s:
f = fractions.Fraction(i)
print(“%s = %s” %(i, f))
Output:
0.5 = 1/2
1.1 = 11/10
-3.9 = -39/10

Itulah penjelasan singkat mengenai modul fractions dan class Fraction di Python. Untuk menyelesaikan permasalahan yang diajukan oleh adik tingkat kami tadi, mereka diminta untuk membuat fungsi yang dapat mengubah bilangan desimal menjadi pecahan dengan nilai yang sama dengan masukan tersebut. Salah satu sintaks yang sederhana untuk hal ini adalah:

import fractions

def pecahan(angkaDesimal):
s = fractions.Fraction(angkaDesimal)
print(“%s = %s” %(angkaDesimal, s))

Namun, sintaks ini tidak memberikan hasil yang diinginkan saat bilangan yang dimasukkan adalah bilangan yang sangat kecil seperti float. Sebagai contoh, ketika angka 0.1 digunakan, hasilnya bukanlah 0.1 = 1/10, melainkan 0.1 = 3602879701896397/36028797018963968. Hal ini terjadi karena Python menganggap 0.1 sebagai float, bukan angka rasional. Sehingga, nilai 0.1 hanya mendekati 1/10 dan tidak sama dengan 1/10.

Untuk mengatasi masalah ini, kita dapat menggunakan fitur decimal.Decimal untuk mendapatkan hasil yang lebih akurat. Fitur ini membatasi ukuran penyebut menggunakan limit_denominator(). Berikut adalah contoh sintaks yang dimodifikasi:

from fractions import Fraction

def pecahan(angkaDesimal):
u = Fraction(angkaDesimal)
hasil = u.limit_denominator()
print(“%s = %s” %(angkaDesimal, hasil))

Contoh penggunaan:
pecahan(0.1)
Output: 0.1 = 1/10

Dengan menggunakan fitur ini, kita dapat mengubah angka floating-point menjadi angka rasional dengan nilai yang terdekat. Namun, perlu diingat bahwa banyak pecahan desimal tidak dapat diwakilkan secara tepat dalam bentuk biner. Sehingga, saat memasukkan bilangan floating-point desimal, mesin hanya akan mencari bilangan floating-point biner terdekat dengan input tersebut.

Itulah penjelasan mengenai cara mengubah angka desimal menjadi pecahan di Python. Semoga bermanfaat dan selamat belajar!