Kurs
Sayıları iki ondalık basamağa yuvarlamak, Python'da önemli bir tekniktir. Özellikle finansal hesaplamalarda, veri sunumunda ve bilimsel raporlamada kullanışlıdır.
Python, hassas yuvarlama için çeşitli yöntemler sunar. Bu eğitimde, yerleşik fonksiyonlar, kütüphaneler ve biçimlendirme yöntemlerini kullanarak bir sayıyı Python'da iki ondalık basamağa nasıl yuvarlayacağınızı göstereceğim.
Bir veri analisti olarak yeni başlıyorsanız, veri manipülasyonu ve dönüşümü için Python'un temellerini öğrenmek üzere DataCamp’in Introduction to Python kursunu almanızı öneririm. Veri analizi iş akışlarında büyük sayı dizilerini yuvarlamanız gerekiyorsa Python NumPy eğitimimiz de faydalı olacaktır.
Özet
-
Aritmetik yuvarlama için
round(number, 2)kullanın — gerçek değeri değiştirir. -
Yalnızca görüntüleme için
f"{number:.2f}"veyastr.format()kullanın — özgün float değişmeden kalır. -
Kesin ondalık duyarlılığın gerektiği durumlarda (ör. finansal hesaplamalar)
decimalmodülünü kullanın. -
Bir NumPy dizisinin tamamını tek seferde yuvarlamak için
np.round(array, 2)kullanın. -
Float duyarlılığına dikkat edin:
round(2.675, 2), belleklerde float'ların saklanma biçimi nedeniyle2.68değil2.67döndürür.
Yuvarlama ve Ondalık Basamakları Anlama
Ondalık basamaklar, bir sayıda ondalık noktadan hemen sonra gelen rakamları ifade eder. Ondalık basamaklar, bir sayının hassasiyetini belirlediği için önemlidir. Ne kadar çok ondalık basamak varsa o kadar hassastır ve tersi de geçerlidir.
Sayıları yuvarlamak, bir sayıyı ondalık basamak sayısını azaltarak ayarlamayı ifade eder. Bu teknik genellikle bir sayıyı basitleştirirken hesaplamalar arasında tutarlılık sağlamak için uygulanır. Yine de, belirli ondalık basamaklara yuvarlamak, yuvarlama sırasında küçük hatalar oluştuğundan hesaplanan değerlerin doğruluğunu etkiler.
Python, sayıları iki ondalık basamağa yuvarlamak için farklı yöntemler sunar. Aşağıdaki örnekler bu tekniklerin ayrıntılı açıklamalarını sunar.
Python'da round() Kullanarak Bir Sayıyı Yuvarlama
round() fonksiyonu, kayan noktalı sayıları belirtilen ondalık basamak sayısına yuvarlamak için Python’un yerleşik fonksiyonudur. İkinci argümana bir değer vererek kaç ondalık basamağa yuvarlanacağını belirleyebilirsiniz. Aşağıdaki örnek 34.15 yazdırır.
# 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
Python'un round() fonksiyonu, ikinci argümanı atladığınızda varsayılan yuvarlama modu olarak "en yakın çifte yuvarlama"yı kullanır. En yakın çifte yuvarlama (bankacı yuvarlaması), bir sayı iki tam sayı arasında tam ortadaysa en yakın çift tam sayıya yuvarlanmasıdır. Bu teknik, birikimli yuvarlama hatalarını en aza indirmeye yardımcı olabileceği için faydalıdır.
round() ile float duyarlılığına dikkat
Finansal kodda round()'a güvenmeden önce bilmeye değer küçük bir incelik var. Şunu deneyin:
print(round(2.675, 2)) # You might expect 2.68
# Output: 2.67
Sonuç 2.68 değil, 2.67’dir. 2.675 değeri ikili kayan nokta (IEEE 754) biçiminde tam olarak temsil edilemez; saklanan değer 2.675'ten biraz küçüktür, bu yüzden Python aşağı yuvarlar.
Finansal hesaplamalar için kesin yuvarlama gerekiyorsa, açık bir yuvarlama modu ile decimal modülünü kullanın:
from decimal import Decimal, ROUND_HALF_UP
result = Decimal("2.675").quantize(Decimal("0.01"), rounding=ROUND_HALF_UP)
print(result) # 2.68
Python'da Bir Sayıyı Yuvarlamak için Dize Biçimlendirme Teknikleri Kullanma
Dize biçimlendirme teknikleri, özellikle çıktıda sayı görüntülerken, sayıları iki ondalık basamağa yuvarlamak için kullanışlıdır.
Unutmayın, Python'da dize biçimlendirme tekniklerini kullanarak bir sayıyı yuvarladığınızda, yuvarlanmış çıktı bir dize olarak görüntülenir ancak özgün sayı değişmeden kalır. Özgün sayı üzerinde işlem yaparsanız, hesaplamalar yuvarlanmamış değere göre yapılır ve bu da beklenmedik sonuçlara yol açabilir.
% operatörü ile yuvarlama
% operatörü, sayıları iki ondalık basamağa biçimlendirmek için geleneksel bir yöntem sunar. % operatörü, değerleri yer tutuculara yerleştirerek biçimlendirilmiş dizeler oluşturmanıza olanak tanır.
Aşağıdaki örnekte, f değeri kayan noktalı bir sayı olarak belirtirken .2 sayının yuvarlanacağı ondalık basamakları belirtir.
# 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
str.format() ile yuvarlama
str.format() yöntemi, karmaşık yuvarlama tekniklerini ele almak için daha esnek bir yol sunar. Adlandırılmış yer tutucular kullanması nedeniyle geliştiriciler bu yöntemi % operatörüne tercih etme eğilimindedir. Aşağıdaki örnekte, kıvırcık parantezler içinde :.2f kullanılarak sayının iki ondalık basamağa yuvarlandığı belirtilir. Kod 3.14 yazdıracaktır.
# 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
f-string'lerle yuvarlama (Python 3.6+)
F-string'ler Python 3.6 ile geldi ve artık dizelere değer gömmek için tercih edilen yöntemdir. F-string söz dizimi, yuvarlama için özellikle yalındır: Ayrı bir çağrı olmadan tek satırda görüntü biçimlendirme elde edersiniz. Aşağıdaki kod 14.68 yazdırır.
# 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
Python'da format() Kullanarak Bir Sayıyı Yuvarlama
Yerleşik format() fonksiyonu bir değer ve bir biçim belirtimi alır ve biçimlendirilmiş bir dize döndürür. str.format()'tan farklı olarak, sayıyı bir şablon dizeye gömmek yerine doğrudan iletirsiniz. Aşağıdaki kod 345.69 yazdırır.
# 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
Python'da Diğer Modülleri Kullanarak Yuvarlama
Temel Python'un ötesinde, sayıları yuvarlamak için kullanabileceğiniz başka pek çok modül vardır. Size en öne çıkan üç örneği göstereceğim: math, decimal ve NumPy.
math modülünü kullanarak yuvarlama
math modülü sayıları doğrudan belirli ondalık basamaklara yuvarlayan fonksiyonlar sağlamaz. Ancak, bir sayıyı iki ondalık basamağa yuvarlamak için math modülünü diğer aritmetik işlemlerle birleştirebilirsiniz.
math.floor() fonksiyonu, bir sayıyı en yakın tam sayıya aşağı yuvarlamak için kullanılır. Bir sayıyı iki ondalık basamağa aşağı yuvarlamak için 100 ile çarpıp math.floor() fonksiyonunu uygular ve 100'e bölersiniz. Aşağıdaki kod 3.14 yazdırır.
# 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
Benzer şekilde, math.ceil() fonksiyonu bir sayıyı en yakın tam sayıya yukarı yuvarlar. Bir sayıyı iki ondalık basamağa yukarı yuvarlamak için 100 ile çarpın, math.ceil() fonksiyonunu uygulayın ve 100'e bölün. Aşağıdaki kod 3.15 yazdırır.
# 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
decimal modülünü kullanarak yuvarlama
Python'daki decimal modülü, .quantize() yöntemiyle kayan noktalı sayıları kesin ondalık basamaklara yuvarlamak için kullanışlıdır. Aşağıdaki örnekte, sayıyı iki ondalık basamağa yuvarlamak istediğimizi belirtmek için hassasiyeti 0.01 olarak ayarlıyoruz.
# 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
Belirli bir yukarı yuvarlama davranışı arıyorsanız, sayının her zaman aşağı yerine yukarı yuvarlandığından emin olmak için math ve decimal modüllerini ve diğer teknikleri kullanmayı anlatan Python'da Bir Sayı Nasıl Yukarı Yuvarlanır başlıklı en yeni eğitimimize göz atın. Daha genel olarak veri dönüştürmeyi anlamak için analitik becerilerinizi geliştirmek üzere Data Analyst with Python kariyer yolumuzu inceleyin.
NumPy kullanarak yuvarlama
NumPy ile diziler üzerinde çalışırken, tüm öğeleri bir anda yuvarlamak için np.round() kullanın. Bu, değerleri elle döngülemekten daha hızlı ve daha okunabilirdir.
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(), Python’un yerleşik round() fonksiyonu ile aynı bankacı yuvarlama kuralını uygular. .round() yöntemi pandas DataFrame ve Series üzerinde de aynı şekilde çalışır:
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
pandas ile veri dönüşümüne daha geniş bir bakış için pandas eğitimimize bakın.
Hangi Python Yuvarlama Yöntemi Ne Zaman Kullanılır
Doğru yuvarlama yaklaşımını seçmek için hızlı bir referans:
| Yöntem | En uygun | Değeri değiştirir mi? | Döndürdüğü tür |
|---|---|---|---|
round(x, 2) |
Genel aritmetik | Evet | float |
f"{x:.2f}" |
Görüntüleme / yazdırma | Hayır | str |
str.format() |
Görüntüleme / yazdırma | Hayır | str |
% operator |
Görüntüleme / yazdırma (eski) | Hayır | str |
format(x, ".2f") |
Görüntüleme / tek değer | Hayır | str |
math.floor() / ceil() |
Her zaman aşağı / her zaman yukarı | Evet | float |
Decimal.quantize() |
Finans / kesin ondalık | Evet | Decimal |
np.round(arr, 2) |
NumPy dizileri | Evet | ndarray |
Seçimi yönlendirmek için birkaç pratik kural:
-
Sadece bir sayıyı mı görüntülüyorsunuz? Bir f-string kullanın (
f"{x:.2f}"). Tek satır, import yok, özgün değer üzerinde yan etki yok. -
Sonuçla aritmetik mi yapacaksınız?
round(x, 2)kullanın. Hesaplamaya devam edebileceğiniz bir float döndürür. -
Finans veya muhasebe kodu mu?
Decimal.quantize()kullanın.decimalmodülünde float duyarlılığı sürprizleri (round(2.675, 2) == 2.67) yaşanmaz. -
Her zaman yukarı ya da her zaman aşağı mı gitmeniz gerekiyor?
math.ceil()veyamath.floor()kullanın. Yuvarlama kurallarını tamamen yok sayarlar. -
Bir NumPy dizisi veya pandas sütunuyla mı çalışıyorsunuz?
np.round(arr, 2)veyaseries.round(2)kullanın. Her ikisi de tüm koleksiyonu bir kerede ele alır. -
Eski kodu mı koruyorsunuz?
%operatörü hâlâ çalışır, ancak Python 3.6'da f-string'ler onun yerini aldı — yeni kodda bunları tercih edin.
Son düşünceler
Sayıları iki ondalık basamağa yuvarlamak, finansal ve bilimsel hesaplamalarda hassasiyeti artırmak için önemli bir tekniktir. Bu yazıda, yerleşik fonksiyonlar, dize biçimlendirme teknikleri ve math modülü dâhil olmak üzere sayıları iki ondalık basamağa yuvarlamanın farklı yöntemlerini ele aldık. Hassasiyet ve biçimlendirme stili gibi özel gereksinimlere göre uygun yöntemi anlamak ve seçmek önemlidir. Farklı kullanım senaryolarına en iyi uyan yaklaşımı daha iyi kavramak için farklı örneklerle bu yöntemleri uygulamanızı öneririm.
Python becerilerinizi ilerletmek isterseniz, fonksiyonlar, dekoratörler ve ileri Python desenlerini kapsayan Python Programming beceri yolumuzu inceleyin. Python Developer kariyer yolumuz da daha gelişmiş veri yapıları ve algoritmalar öğrenirken geliştirici olarak yetkinliğinizi artırmanıza yardımcı olacak şekilde tasarlanmıştır.
Sıkça Sorulan Sorular
Python'da bir sayıyı iki ondalık basamağa yuvarlamanın en basit yolu nedir?
Bir sayıyı iki ondalık basamağa yuvarlamanın en basit yolu yerleşik round() fonksiyonunu kullanmaktır.
Neden round() fonksiyonunu kullanırken bir sayı en yakın tam sayıya yuvarlanıyor?
round() fonksiyonunun varsayılan yöntemi en yakın çifte yuvarlamadır. Bir sayıyı iki ondalık basamağa yuvarlamak için fonksiyonda ikinci argümanı 2 olarak vermeniz gerekir; örn. round(3.14159, 2).
format() fonksiyonu bir sayıyı iki ondalık basamağa yuvarlamak için nasıl kullanılır?
format() fonksiyonu, bir sayıyı belirtilen ondalık basamak sayısına yuvarlamak ve biçimlendirilmiş bir dize içinde görüntülemek için kullanılır.
En yakın çifte yuvarlama nedir?
En yakın çifte yuvarlama veya bankacı yuvarlaması, iki tam sayı arasında tam ortada olan bir sayının en yakın çift tam sayıya yuvarlanmasını içerir.
Python'da math modülü bir sayıyı iki ondalık basamağa yuvarlama imkânı sağlar mı?
Belirli bir ondalık basamak sayısına yuvarlamak için math.floor() ve math.ceil() fonksiyonlarını diğer aritmetiklerle birlikte kullanabilirsiniz.
round(2.675, 2) neden 2.68 yerine 2.67 döndürür?
Bu, kayan noktalı sayı duyarlılığı ile ilgili bir sorundur. 2.675 değeri ikili kayan nokta (IEEE 754) biçiminde tam olarak temsil edilemez; saklanan değer 2.675'ten biraz küçüktür, bu nedenle Python 2.67'ye aşağı yuvarlar.
Bunu finansal kodda önlemek için, açık bir yuvarlama modu ile decimal modülünü kullanın: Decimal("2.675").quantize(Decimal("0.01"), rounding=ROUND_HALF_UP) beklediğiniz gibi 2.68 döndürür.
pandas DataFrame'deki tüm değerleri 2 ondalık basamağa nasıl yuvarlarım?
Bir DataFrame veya Series üzerinde .round() yöntemini kullanın. Tek bir sütunu yuvarlamak için: df["price"] = df["price"].round(2). Tüm sayısal sütunları aynı anda yuvarlamak için: df = df.round(2).

