Python ÖRNEKLER ile round() işlevi
Yuvarlak()
Round(), python ile kullanılabilen yerleşik bir işlevdir. 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 kayan nokta sayısı.
- num_of_decimals: (isteğe bağlı) Yuvarlama sırasında dikkate alınacak ondalık sayısı. İsteğe bağlıdır ve belirtilmezse varsayılan olarak 0 olur ve yuvarlama en yakın tam sayıya yapılır.
Tanım
Round() yöntemi 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 olur ve bu durumda en yakın tam sayıya yuvarlanır ve dönüş türü de bir tam sayı 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.
Ondalık basamaktan sonraki sayı verilirse
- >=5 + 1'den son değere eklenecektir
- Belirtilen ondalık basamağa kadar olduğu için nihai değer <5'ten dönecektir.
Geri dönüş değeri
Ondalık_sayısı belirtilmemişse bir tamsayı değeri, ondalık_sayısı verilmişse bir kayan değer döndürür. Ondalık noktadan sonraki değer >=1 ise değerin +5'e yuvarlanacağını, aksi takdirde belirtilen ondalık basamağa kadar olan değeri döndüreceğini lütfen unutmayın.
Yuvarlamanın Ne Kadar Etkisi Olabilir? (Yuvarlama ve Kesme)
Yuvarlamanın etkisini gösteren 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 kesmek için kullanılır.
Her gün neredeyse 3000 kez yapıldı. Biriken kesintiler ayda yaklaşık 25 puanlık bir kayba yol açıyor.
Değerleri yuvarlamaya karşı kesmenin bir örneği aşağıda gösterilmiştir.
Aşağıda oluşturulan kayan noktalı sayıları stok değerleri olarak düşünün. Şu anda bunu bir dizi ürün için üretiyorum
1,000,000 ile 0.01 arasında 0.05 saniye.
Örnekler:
arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]
Yuvarlamanın etkisini göstermek için küçük bir kod yazdım; burada ilk başta sayıları yalnızca 3 ondalık basamağa kadar kullanmanız gerekiyor, yani sayıyı 3 virgülden sonra kesmeniz gerekiyor.
Orijinal toplam değere, kesilmiş değerlerden gelen toplam ve orijinal ile kesilmiş değer arasındaki farka sahibim.
Aynı sayı kümesinde, 3 ondalık basamağa kadar round() yöntemini kullanıyorum ve orijinal değer ile yuvarlanmış değer arasındaki toplamı ve farkı hesaplıyorum.
İşte örnek ve çıktı
Ö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 ile kesme sonrası arasındaki fark 499.9016193868665, yuvarlaktan ise 0.04661938686695066'dır.
Fark çok büyük görünüyor ve örnek, round() yönteminin doğruluğa yakın hesaplamalarda nasıl yardımcı olduğunu gösteriyor.
Örnek: Yuvarlama Şamandırası Numbers
Bu programda kayan sayılarda yuvarlamanın nasıl yapıldığı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 çalıştığına dair birkaç örnek görelim
# 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: Yuvarlak Numpy Dizileri
Numpy nasıl yuvarlanır? python'daki diziler?
Bunu çözmek için aşağıdaki örnekte gösterildiği gibi numpy modülünü kullanabilir 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]
Aşağıdaki örnekte gösterilenle aynı sonucu veren numpy.around() işlevini de kullanabiliriz.
Örnek: Ondalık Modül
Round() işlevine ek olarak python, ondalık sayıların daha doğru şekilde işlenmesine yardımcı olan bir ondalık modüle sahiptir.
Decimal modülü aşağıda gösterildiği gibi yuvarlama türleriyle birlikte gelir:
- ROUND_CEILING: Sonsuzluğa doğru yuvarlanacak,
- ROUND_DOWN: değeri sıfıra doğru yuvarlar,
- ROUND_FLOOR: -Sonsuzluğa doğru yuvarlanacak,
- ROUND_HALF_DOWN: sıfıra doğru en yakın değere yuvarlanır,
- ROUND_HALF_EVEN: en yakın çift tam sayıya yuvarlanır,
- ROUND_HALF_UP: sıfırdan uzaklaşarak en yakın değere yuvarlanır
- ROUND_UP: Değerin sıfırdan uzaklaşacağı yere yuvarlanır.
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
ÖZET
- Round(float_num, Num_of_decimals), python ile kullanılabilen yerleşik bir işlevdir. Giriş olarak verilen ondalık basamaklara yuvarlanacak kayan noktalı sayıyı size döndürecektir.
- float_num: yuvarlanacak kayan nokta sayısı.
- Ondalık_Sayısı: Yuvarlama sırasında dikkate alınması gereken ondalık sayı sayısıdır.
- Ondalık_sayısı belirtilmemişse bir tamsayı değeri, ondalık_sayısı verilmişse bir kayan değer döndürür.
