Kursus
Membulatkan angka ke dua tempat desimal adalah teknik penting di Python. Ini sangat berguna dalam perhitungan keuangan, penyajian data, dan pelaporan ilmiah.
Python menyediakan beragam metode untuk pembulatan yang presisi. Dalam tutorial ini, saya akan menunjukkan cara membulatkan angka ke dua tempat desimal di Python menggunakan fungsi bawaan, pustaka, dan metode pemformatan.
Jika Anda baru memulai sebagai analis data, saya merekomendasikan mengikuti kursus Introduction to Python dari DataCamp untuk mempelajari dasar-dasar Python untuk manipulasi dan transformasi data. Anda juga akan menemukan tutorial Python NumPy kami bermanfaat jika Anda perlu membulatkan array angka besar dalam alur kerja analisis data.
TL;DR
-
Gunakan
round(number, 2)untuk pembulatan aritmetika — ini mengubah nilai sebenarnya. -
Gunakan
f"{number:.2f}"ataustr.format()hanya untuk tampilan — float asli tidak berubah. -
Gunakan modul
decimalketika dibutuhkan presisi desimal yang tepat (misalnya, perhitungan keuangan). -
Gunakan
np.round(array, 2)untuk membulatkan seluruh array NumPy sekaligus. -
Waspadai kejutan presisi float:
round(2.675, 2)mengembalikan2.67, bukan2.68, karena cara float disimpan di memori.
Memahami Pembulatan dan Tempat Desimal
Tempat desimal mengacu pada angka-angka yang muncul tepat setelah tanda desimal pada sebuah bilangan. Tempat desimal penting karena menentukan tingkat presisi suatu bilangan. Semakin banyak tempat desimal, semakin presisi, dan sebaliknya.
Membulatkan angka berarti menyesuaikan angka dengan mengurangi jumlah tempat desimal. Teknik ini biasanya diterapkan untuk menyederhanakan angka sekaligus menjaga konsistensi di seluruh perhitungan. Namun, membulatkan angka ke tempat desimal tertentu memengaruhi akurasi nilai yang dihitung karena adanya kesalahan kecil yang diperkenalkan selama pembulatan.
Python menyediakan berbagai metode untuk membulatkan angka ke dua tempat desimal. Contoh-contoh berikut memberikan penjelasan mendetail tentang teknik-teknik ini.
Menggunakan round() untuk Membulatkan Angka di Python
Fungsi round() adalah fungsi bawaan Python untuk membulatkan bilangan floating-point ke jumlah tempat desimal yang ditentukan. Anda dapat menentukan jumlah tempat desimal dengan memberikan nilai pada argumen kedua. Contoh di bawah ini mencetak 34,15.
# Example number to be rounded
number = 34.14559
# Rounding the number to 2 decimal places
rounded_number = round(number, 2)
print(rounded_number)
# 34.15
Fungsi round() Python menggunakan "round half to even" sebagai mode pembulatan default saat Anda menghilangkan argumen kedua. Round half to even (pembulatan bankir) adalah ketika suatu angka berada tepat di tengah antara dua bilangan bulat, maka dibulatkan ke bilangan bulat genap terdekat. Teknik ini berguna karena dapat membantu meminimalkan kesalahan pembulatan kumulatif.
Kejutan presisi float dengan round()
Ada satu kehalusan yang perlu diketahui sebelum Anda mengandalkan round() dalam kode keuangan. Coba ini:
print(round(2.675, 2)) # You might expect 2.68
# Output: 2.67
Hasilnya adalah 2.67, bukan 2.68. Nilai 2.675 tidak dapat direpresentasikan secara tepat dalam floating-point biner (IEEE 754); nilai yang disimpan sedikit kurang dari 2.675, sehingga Python membulatkan ke bawah.
Jika Anda memerlukan pembulatan yang tepat untuk perhitungan keuangan, gunakan modul decimal dengan mode pembulatan eksplisit:
from decimal import Decimal, ROUND_HALF_UP
result = Decimal("2.675").quantize(Decimal("0.01"), rounding=ROUND_HALF_UP)
print(result) # 2.68
Menggunakan Teknik Pembentukan String untuk Membulatkan Angka di Python
Teknik pemformatan string berguna untuk membulatkan angka ke dua tempat desimal, terutama saat menampilkan angka pada output.
Perlu diingat bahwa ketika Anda menggunakan teknik pemformatan string di Python untuk membulatkan angka, keluaran yang dibulatkan ditampilkan sebagai string, tetapi angka aslinya tetap tidak berubah. Jika Anda melakukan operasi matematika pada angka asli, perhitungannya didasarkan pada nilai yang tidak dibulatkan, yang dapat menghasilkan kejutan.
Membulatkan dengan operator %
Operator % menawarkan metode tradisional untuk memformat angka ke dua tempat desimal. Operator % memungkinkan pembuatan string terformat dengan menyisipkan nilai ke dalam placeholder.
Pada contoh di bawah, f menunjukkan nilai sebagai bilangan floating-point sementara .2 menentukan tempat desimal untuk membulatkan angka.
# Example number to be rounded
number = 3.14159
# Using the % operator to round to 2 decimal places
formatted_number = "%.2f" % number
print(formatted_number)
# 3.14
Membulatkan dengan str.format()
Metode str.format() menyediakan cara yang lebih fleksibel untuk menangani teknik pembulatan yang kompleks. Karena menggunakan placeholder bernama, pengembang cenderung lebih menyukai metode ini daripada operator %. Pada contoh di bawah, :.2f digunakan di dalam kurung kurawal untuk menentukan bahwa angka dibulatkan ke dua tempat desimal. Kode akan mencetak 3.14.
# Example number to be rounded
number = 3.14159
# Using str.format() to round to 2 decimal places
formatted_number = "{:.2f}".format(number)
print(formatted_number)
# 3.14
Membulatkan dengan f-strings (Python 3.6+)
F-string hadir di Python 3.6 dan kini menjadi cara yang disukai untuk menyisipkan nilai ke dalam string. Sintaks f-string sangat ringkas untuk pembulatan: Anda mendapatkan pemformatan tampilan dalam satu baris tanpa pemanggilan terpisah. Kode di bawah ini mencetak 14.68.
# Example number to be rounded
number = 14.67856
# Using f-strings to round to 2 decimal places
formatted_number = f"{number:.2f}"
print(formatted_number)
# 14.68
Menggunakan format() untuk Membulatkan Angka di Python
Fungsi bawaan format() menerima sebuah nilai dan spesifikasi format lalu mengembalikan string terformat. Berbeda dengan str.format(), Anda meneruskan angkanya langsung alih-alih menyematkannya dalam template string. Kode di bawah ini mencetak 345.69.
# Example number to be rounded
number = 345.68776
# Using the built-in format() to round to 2 decimal places
formatted_number = format(number, ".2f")
print(formatted_number)
# 345.69
Menggunakan Modul Lain untuk Membulatkan Angka di Python
Di luar Python dasar, ada banyak modul lain yang dapat Anda gunakan untuk membulatkan angka di Python. Saya akan menunjukkan tiga contoh paling menonjol: math, decimal, dan NumPy.
Membulatkan dengan modul math
Modul math tidak menyediakan fungsi yang secara langsung membulatkan angka ke tempat desimal tertentu. Namun, Anda dapat menggabungkan modul math dan aritmetika lain untuk membulatkan angka ke dua tempat desimal.
Fungsi math.floor() digunakan untuk membulatkan ke bawah suatu angka ke bilangan bulat terdekat. Untuk membulatkan ke bawah angka ke dua tempat desimal, Anda mengalikannya dengan 100, menerapkan fungsi math.floor(), lalu membaginya dengan 100. Kode di bawah ini mencetak 3.14.
# Import math module
import math
# Example number to be rounded
number = 3.14159
# Using math.floor() to round down to 2 decimal places
rounded_down = math.floor(number * 100) / 100
print(rounded_down)
# 3.14
Demikian pula, fungsi math.ceil() membulatkan angka ke atas ke bilangan bulat terdekat. Untuk membulatkan ke atas angka ke dua tempat desimal, kalikan dengan 100, terapkan fungsi math.ceil(), lalu bagi dengan 100. Kode di bawah ini mencetak 3.15.
# Import the math module
import math
# Example number to be rounded
number = 3.14159
# Using math.ceil() to round up to 2 decimal places
rounded_up = math.ceil(number * 100) / 100
print(rounded_up)
# 3.15
Membulatkan dengan modul decimal
Modul decimal di Python berguna untuk membulatkan angka float ke tempat desimal yang presisi menggunakan metode .quantize(). Pada contoh di bawah, kita menetapkan presisi sebagai 0.01 untuk menunjukkan bahwa kita ingin membulatkan angka ke dua tempat desimal.
# Import the decimal module
from decimal import Decimal
# Example number to be rounded
number = Decimal("18.73869")
# Define the rounding precision to 2 decimal places
precision = Decimal('0.01')
# Using the quantize method with ROUND_UP
# to round the number up to 2 decimal places
rounded_number = number.quantize(precision)
print(rounded_number)
# 18.74
Jika Anda mencari perilaku pembulatan ke atas secara spesifik, lihat tutorial terbaru kami tentang Cara Membulatkan Angka ke Atas di Python untuk mempelajari lebih lanjut penggunaan modul math dan decimal, serta teknik lain untuk memastikan angka selalu dibulatkan ke atas, bukan ke bawah. Jika Anda ingin memahami transformasi data secara lebih umum, ikuti jalur karier Data Analyst with Python untuk mengembangkan keterampilan analitis Anda.
Membulatkan dengan NumPy
Saat bekerja dengan array di NumPy, gunakan np.round() untuk membulatkan setiap elemen sekaligus. Ini lebih cepat dan lebih mudah dibaca daripada melakukan loop secara manual.
import numpy as np
prices = np.array([1.2345, 9.8765, 3.14159])
rounded_prices = np.round(prices, 2)
print(rounded_prices)
# [1.23 9.88 3.14]
np.round() menerapkan aturan pembulatan bankir yang sama seperti round() bawaan Python. Metode .round() bekerja dengan cara yang sama pada DataFrame dan Series di pandas:
import pandas as pd
df = pd.DataFrame({"price": [1.2345, 9.8765, 3.14159]})
df["price_rounded"] = df["price"].round(2)
print(df)
# price price_rounded
# 0 1.2345 1.23
# 1 9.8765 9.88
# 2 3.14159 3.14
Untuk gambaran yang lebih luas tentang transformasi data dengan pandas, lihat tutorial pandas kami.
Kapan Menggunakan Setiap Metode Pembulatan Python
Berikut referensi cepat untuk memilih pendekatan pembulatan yang tepat:
| Metode | Paling cocok untuk | Mengubah nilai? | Mengembalikan |
|---|---|---|---|
round(x, 2) |
Aritmetika umum | Ya | float |
f"{x:.2f}" |
Tampilan / cetak | Tidak | str |
str.format() |
Tampilan / cetak | Tidak | str |
% operator |
Tampilan / cetak (warisan) | Tidak | str |
format(x, ".2f") |
Tampilan / nilai tunggal | Tidak | str |
math.floor() / ceil() |
Selalu ke bawah / selalu ke atas | Ya | float |
Decimal.quantize() |
Keuangan / desimal tepat | Ya | Decimal |
np.round(arr, 2) |
Array NumPy | Ya | ndarray |
Beberapa pedoman praktis untuk membantu pilihan:
-
Hanya menampilkan angka? Gunakan f-string (
f"{x:.2f}"). Satu baris, tanpa import, tanpa efek samping pada nilai asli. -
Melakukan aritmetika dengan hasilnya? Gunakan
round(x, 2). Mengembalikan float yang dapat terus Anda gunakan untuk menghitung. -
Kode keuangan atau akuntansi? Gunakan
Decimal.quantize(). Kejutan presisi float (round(2.675, 2) == 2.67) tidak terjadi dengan moduldecimal. -
Perlu selalu ke atas atau selalu ke bawah? Gunakan
math.ceil()ataumath.floor(). Keduanya mengabaikan aturan pembulatan sama sekali. -
Bekerja dengan array NumPy atau kolom pandas? Gunakan
np.round(arr, 2)atauseries.round(2). Keduanya menangani seluruh koleksi sekaligus. -
Memelihara kode lama? Operator
%masih berfungsi, tetapi f-string menggantikannya di Python 3.6 — lebih disarankan untuk kode baru.
Penutup
Membulatkan angka ke dua tempat desimal adalah teknik penting untuk meningkatkan presisi dalam perhitungan keuangan dan ilmiah. Dalam artikel ini, kita telah membahas berbagai metode untuk membulatkan angka ke dua tempat desimal, termasuk fungsi bawaan, teknik pemformatan string, dan modul math. Penting untuk memahami dan memilih metode yang sesuai berdasarkan kebutuhan spesifik, seperti presisi dan gaya pemformatan. Saya mendorong Anda untuk mempraktikkan berbagai metode menggunakan beragam contoh agar lebih memahami kecocokan terbaik untuk kasus penggunaan Anda.
Jika Anda ingin meningkatkan keterampilan Python Anda, lihat jalur keterampilan Python Programming kami, yang membahas fungsi, dekorator, dan pola Python tingkat lanjut. Jalur karier Python Developer kami juga dirancang untuk membantu Anda meningkatkan kemampuan sebagai pengembang sambil mempelajari struktur data dan algoritma yang lebih maju.
Pertanyaan yang Sering Diajukan
Apa cara termudah untuk membulatkan angka ke dua tempat desimal di Python?
Cara termudah untuk membulatkan angka ke dua tempat desimal adalah dengan menggunakan fungsi bawaan round().
Mengapa angka dibulatkan ke bilangan bulat terdekat saat menggunakan fungsi round()?
Metode default fungsi round() adalah round half to even. Untuk membulatkan angka ke dua tempat desimal, Anda harus memberikan argumen kedua sebagai 2 pada fungsi, yaitu round(3.14159, 2).
Bagaimana fungsi format() digunakan untuk membulatkan angka ke dua tempat desimal?
Fungsi format() digunakan untuk membulatkan angka ke jumlah tempat desimal yang ditentukan dan menampilkannya dalam string terformat.
Apa itu round half to even?
Metode rounding half to even atau pembulatan bankir melibatkan pembulatan angka yang tepat berada di tengah antara dua bilangan bulat ke bilangan bulat genap terdekat.
Apakah modul math menyediakan pembulatan angka ke dua tempat desimal di Python?
Anda hanya dapat menggunakan fungsi math.floor() dan math.ceil() bersama aritmetika lain untuk membulatkan angka ke jumlah tempat desimal yang ditentukan.
Mengapa round(2.675, 2) mengembalikan 2.67 alih-alih 2.68?
Ini adalah masalah presisi floating-point. Nilai 2.675 tidak dapat direpresentasikan secara tepat dalam floating-point biner (IEEE 754); nilai yang disimpan sedikit kurang dari 2.675, sehingga Python membulatkan ke bawah menjadi 2.67.
Untuk menghindarinya dalam kode keuangan, gunakan modul decimal dengan mode pembulatan eksplisit: Decimal("2.675").quantize(Decimal("0.01"), rounding=ROUND_HALF_UP) mengembalikan 2.68 seperti yang diharapkan.
Bagaimana cara membulatkan semua nilai di DataFrame pandas ke 2 tempat desimal?
Gunakan metode .round() pada DataFrame atau Series. Untuk membulatkan satu kolom: df["price"] = df["price"].round(2). Untuk membulatkan seluruh kolom numerik sekaligus: df = df.round(2).

