Python round() Fonksiyonu ve ÖRNEKLERİ

⚡ Akıllı Özet

Python `round()` fonksiyonu, ondalıklı veya tamsayı bir değeri belirtilen sayıda ondalık basamağa yuvarlar ve eşitlik durumlarında en yakın çift basamağa yuvarlama yöntemini kullanır.

  • 🔘 Sözdizimi: round(number, ndigits) fonksiyonu, yuvarlanacak değeri ve varsayılan değeri sıfır olan isteğe bağlı basamak sayısını kabul eder.
  • ☑️ Dönüş türü: ndigits belirtilmediğinde tamsayı, belirtildiğinde ise ondalık sayı döndürülür.
  • Bankacı yuvarlaması: Ara değerler en yakın çift sayıya yuvarlanır, bu nedenle round(2.5) 2 döndürür.
  • 🧪 Negatif sayılar: Negatif sayılar için de yuvarlama geçerlidir; -2.8 -3'e, -1.5 ise -2'ye yuvarlanır.
  • Hassas aletler: decimal modülü ve NumPy'nin round() fonksiyonu, sabit hassasiyetli ve dizi yuvarlama işlemlerini gerçekleştirir.
  • 🤖 Yapay zeka iş akışları: Makine öğrenimi kodu, daha temiz kayıt ve raporlar için metrikleri, olasılıkları ve ağırlıkları yuvarlar.

Python yuvarlak() İşlev

round() fonksiyonu nedir? Python?

Python `round()` fonksiyonu, yerleşik bir fonksiyon olarak kullanılabilir. Python. Size, giriş olarak verilen ondalık basamaklara yuvarlanacak bir kayan sayı döndürecektir.

Yuvarlatılacak ondalık basamaklar belirtilmemişse 0 kabul edilir ve en yakın tam sayıya yuvarlanır.

Sözdizimi

round(float_num, num_of_decimals)

Parametreler

  • float_num: Yuvarlanacak ondalık sayı.
  • ondalık basamak sayısı: (İsteğe bağlı) Yuvarlama sırasında dikkate alınacak ondalık basamak sayısı. İsteğe bağlıdır ve belirtilmezse varsayılan olarak 0'dır ve yuvarlama en yakın tam sayıya yapılır.

Açıklama

`round()` metodu iki argüman alır:

  • Yuvarlanacak sayı ve
  • yuvarlama sırasında dikkate alınması gereken ondalık basamaklar.

İkinci argüman isteğe bağlıdır ve belirtilmediğinde varsayılan olarak 0 değerini alır; bu durumda en yakın tamsayıya yuvarlanır ve dönüş türü de bir tamsayı olur.

Ondalık basamaklar, yani ikinci argüman mevcut olduğunda, verilen basamak sayısına yuvarlanacaktır. Dönüş türü float olacaktır.

Verilen ondalık basamaktan sonraki sayı şu ise:

  • Eğer değer 5 veya daha büyükse, nihai değere +1 eklenecektir.
  • Eğer değer 5'ten küçükse, son değer belirtilen ondalık basamak sayısına kadar olduğu gibi döndürülecektir.

Geri dönüş değeri

`num_of_decimals` belirtilmemişse tamsayı, belirtilmişse ondalık sayı değeri döndürür. Lütfen dikkat: Ondalık noktadan sonraki değer 5 veya daha büyükse değer +1'e yuvarlanır, aksi takdirde belirtilen ondalık basamak sayısına kadar olduğu gibi döndürülür.

Yuvarlamanın Ne Kadar Etkisi Olabilir? (Yuvarlama ve Kesme)

Yuvarlamanın etkisini göstermek için en iyi örnek borsa piyasasıdır. Geçmişte, yani 1982 yılında, Vancouver Menkul Kıymetler Borsası (VSE), her işlemde hisse senedi değerlerini üç ondalık basamağa kadar yuvarlardı.

Bu işlem her gün yaklaşık 3000 kez tekrarlandı. Biriken bu kesintiler, ayda yaklaşık 25 puanlık bir kayba yol açtı.

Değerleri yuvarlamaya karşı kesmenin bir örneği aşağıda gösterilmiştir.

Aşağıda oluşturulan kayan noktalı sayıları hisse senedi değerleri olarak düşünün. Şu anda, bunları 0.01 ile 0.05 arasında 1,000,000 saniyelik bir aralık için oluşturuyorum.

Örnekler:

arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]

Yuvarlamanın etkisini göstermek için, başlangıçta sayıları yalnızca 3 ondalık basamağa kadar kullanan, yani sayıyı 3 ondalık basamaktan sonra kesen küçük bir kod parçası yazdım.

Elimde orijinal toplam değer, kırpılmış değerlerden elde edilen toplam değer ve orijinal değer ile kırpılmış değer arasındaki fark var.

Aynı sayı kümesi üzerinde, 3 ondalık basamağa kadar round() yöntemini kullandım ve orijinal değer ile yuvarlanmış değer arasındaki toplamı ve farkı hesapladım.

İşte örnek ve çıktısı.

Örnek 1

import random

def truncate(num):
    return int(num * 1000) / 1000

arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]
sum_num = 0
sum_truncate = 0
for i in arr:
    sum_num = sum_num + i  
    sum_truncate = truncate(sum_truncate + i)
  
print("Testing by using truncating upto 3 decimal places")
print("The original sum is = ", sum_num)
print("The total using truncate = ", sum_truncate)
print("The difference from original - truncate = ", sum_num - sum_truncate)

print("\n\n")
print("Testing by using round() upto 3 decimal places")
sum_num1 = 0
sum_truncate1 = 0
for i in arr:
    sum_num1 = sum_num1 + i  
    sum_truncate1 = round(sum_truncate1 + i, 3)

print("The original sum is =", sum_num1)
print("The total using round = ", sum_truncate1)
print("The difference from original - round =", sum_num1 - sum_truncate1)

Çıktı:

Testing by using truncating upto 3 decimal places
The original sum is =  29985.958619386867
The total using truncate =  29486.057
The difference from original - truncate =  499.9016193868665

Testing by using round() up to 3 decimal places
The original sum is = 29985.958619386867
The total using round =  29985.912
The difference from original - round = 0.04661938686695066

Orijinal ve yuvarlanmış değer arasındaki fark 499.9016193868665'tir ve yuvarlama işleminden sonra bu fark 0.04661938686695066'dır.

Aradaki fark oldukça büyük görünüyor ve örnek, round() yönteminin doğruluğa yakın hesaplamalar yapmaya nasıl yardımcı olduğunu gösteriyor.

Örnek: Yuvarlama Şamandırası Numbers

Bu programda, ondalıklı sayılarda yuvarlamanın nasıl çalıştığını göreceğiz.

# testing round()

float_num1 = 10.60 # here the value will be rounded to 11 as after the decimal point the number is 6 that is >5

float_num2 = 10.40 # here the value will be rounded to 10 as after the decimal point the number is 4 that is <=5

float_num3 = 10.3456 # here the value will be 10.35 as after the 2 decimal points the value >=5

float_num4 = 10.3445 #here the value will be 10.34 as after the 2 decimal points the value is <5

print("The rounded value without num_of_decimals is :", round(float_num1))
print("The rounded value without num_of_decimals is :", round(float_num2))
print("The rounded value with num_of_decimals as 2 is :", round(float_num3, 2))
print("The rounded value with num_of_decimals as 2 is :", round(float_num4, 2))

Çıktı:

The rounded value without num_of_decimals is : 11
The rounded value without num_of_decimals is : 10
The rounded value with num_of_decimals as 2 is : 10.35
The rounded value with num_of_decimals as 2 is : 10.34

Örnek: Tam Sayı Değerlerini Yuvarlama

Bir tamsayı değerinde round() işlevini kullanırsanız, herhangi bir değişiklik yapmadan size yalnızca sayıyı geri döndürür.

# testing round() on a integer

num = 15

print("The output is", round(num))

Çıktı:

The output is 15

Örnek: Negatifte Yuvarlama Numbers

Negatif sayılarda yuvarlamanın nasıl işlediğine dair birkaç örneğe bakalım.

# testing round()

num = -2.8
num1 = -1.5
print("The value after rounding is", round(num))
print("The value after rounding is", round(num1))

Çıktı:

C:\pythontest>python testround.py
The value after rounding is -3
The value after rounding is -2

Örnek: NumPy Dizilerini Yuvarlama

NumPy'de yuvarlama nasıl yapılır? diziler Python?

Bunu çözmek için, aşağıdaki örnekte gösterildiği gibi NumPy modülünü ve numpy.round() veya numpy.around() yöntemini kullanabiliriz.

Numpy.round()'u kullanma

# testing round()
import numpy as np

arr = [-0.341111, 1.455098989, 4.232323, -0.3432326, 7.626632, 5.122323]

arr1 = np.round(arr, 2)

print(arr1)

Çıktı:

C:\pythontest>python testround.py
[-0.34  1.46  4.23 -0.34  7.63  5.12]

Yukarıda gösterilen numpy.round() ile aynı sonucu veren numpy.around() yöntemini de kullanabiliriz.

Örnek: Ondalık Modül

Round() işlevine ek olarak, Python Ondalık sayıları daha doğru bir şekilde işlemeye yardımcı olan bir ondalık modülüne sahiptir.

Ondalık sayı modülü, aşağıda gösterildiği gibi yuvarlama türleriyle birlikte gelir:

  • YUVARLAK TAVAN: Sonsuzluğa doğru yuvarlanacaktır.
  • AŞAĞI YUVARLAMA: Değeri sıfıra doğru yuvarlayacaktır.
  • YUVARLAK ZEMİN: -Sonsuza doğru yuvarlanacaktır.
  • YARIYA YUVARLAK AŞAĞI: Sıfıra doğru giderken en yakın değere yuvarlanacaktır.
  • YARIM ÇİFT: En yakın çift sayıya yuvarlanacaktır.
  • YARIYA YUVARLA: Sıfırdan uzaklaşarak en yakın değere yuvarlanacaktır.
  • HESABI YUVARLAMAK: Değer sıfırdan uzaklaştıkça yuvarlama işlemi gerçekleşecektir.

Ondalık sayılarda, quantize() yöntemi sabit sayıda ondalık basamağa yuvarlamaya yardımcı olur ve aşağıdaki örnekte gösterildiği gibi kullanılacak yuvarlamayı belirtebilirsiniz.

Örnek: Round() ve ondalık yöntemleri kullanma

import  decimal
round_num = 15.456

final_val = round(round_num, 2)

#Using decimal module
final_val1 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_CEILING)
final_val2 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_DOWN)
final_val3 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_FLOOR)
final_val4 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_DOWN)
final_val5 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_EVEN)
final_val6 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_UP)
final_val7 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_UP)

print("Using round()", final_val)
print("Using Decimal - ROUND_CEILING ",final_val1)
print("Using Decimal - ROUND_DOWN ",final_val2)
print("Using Decimal - ROUND_FLOOR ",final_val3)
print("Using Decimal - ROUND_HALF_DOWN ",final_val4)
print("Using Decimal - ROUND_HALF_EVEN ",final_val5)
print("Using Decimal - ROUND_HALF_UP ",final_val6)
print("Using Decimal - ROUND_UP ",final_val7)

Çıktı:

Using round() 15.46
Using Decimal - ROUND_CEILING  15.46
Using Decimal - ROUND_DOWN  15.45
Using Decimal - ROUND_FLOOR  15.45
Using Decimal - ROUND_HALF_DOWN  15.46
Using Decimal - ROUND_HALF_EVEN  15.46
Using Decimal - ROUND_HALF_UP  15.46
Using Decimal - ROUND_UP  15.46

SSS

Hayır. Python 3. eşitlik durumlarında yuvarlama işlemi yarıya indirilir (bankacı yuvarlaması), bu nedenle round(0.5) 0, round(2.5) 2 ve round(3.5) 4 olur. Bu, kümülatif sapmayı azaltır.

2.675 sayısı ikili kayan noktalı sayılarda tam olarak saklanamadığı için; aslında yaklaşık 2.6749999999999998 olarak tutulur, bu nedenle round() aşağı yuvarlar. Tam sonuçlar için decimal.Decimal('2.675') kullanın.

Matematik modülünü kullanın: `math.ceil(x)` her zaman yukarı yuvarlar, `math.floor(x)` her zaman aşağı yuvarlar ve `int(x)` sıfıra doğru yuvarlar. `round()` fonksiyonunun kendisi sabit bir yönü zorlayamaz.

Negatif bir ikinci argüman geçirin: round(12345, -1) 12340, round(12345, -2) 12300 ve round(12345, -3) 12000 sonucunu verir. Negatif rakamlar ondalık noktasının soluna yuvarlar.

round(x, 2) daha sonraki matematiksel işlemlerde kullanılan değeri değiştirirken, f'{x:.2f}' yalnızca görüntüyü biçimlendirir ve sayıyı olduğu gibi bırakır. Hesaplamalar için round(), çıktı için f-dizeleri kullanın.

Hayır. Numbers Değiştirilemez olduklarından, round() işlevi girdiyi değiştirmeden yeni bir değer döndürür. Örneğin, result = round(3.14159, 2); şeklinde atama yaparsanız, orijinal değişken tam hassasiyetini korur.

Makine öğrenimi kodu, okunabilir günlükler için ve tahminleri sınıf etiketlerine eşlemek için doğruluk, kayıp ve olasılık değerlerini yuvarlar. Gradyan hesaplamaları için tam hassasiyeti koruyun ve yalnızca görüntülenen nihai metrikleri yuvarlayın.

Evet. GitHub Copilot gibi yapay zeka asistanları, yorum veya fonksiyon adından round(), np.round() ve ondalık yuvarlama işlemlerini otomatik olarak tamamlar ve aracı araçlar, manuel biçimlendirmeyi round() çağrılarına dönüştürür; ancak seçilen hassasiyetin yine de gözden geçirilmesi gerekir.

Bu yazıyı şu şekilde özetleyin: