Python'da ondalık basamak azaltma nasıl yapılır?

cenkkk

Megapat
Katılım
24 Haziran 2016
Mesajlar
6.088
Çözümler
16
Daha fazla  
Sistem Özellikleri
Intel Core 2 Quad Q6600 | AMD RX 6800 XT | 2 GB RAM| 250 GB Hitachi HDD|
Cinsiyet
Erkek
Arkadaşlar araştırdım ama bir türlü bulamadım, Python'da mesela 0.23999999999 sayısını noktadan sonra 2 basamak kalacak şekilde düzenlemek istiyorum. Ancak round veya format fonksiyonlarıyla yapamadım. Sayı 0.24 oluyor ama ben yuvarlama istemiyorum. Sadece iki basamaktan sonrasını atsın ve sadece 0.23 kalsın. 1.258999 sayısını 1.26 değil 1.25 olarak yuvarlasın, bunu nasıl yapabilirim?
 
Önce string'e dönüştürüp istediğiniz basamağa kadar alın.

Python:
a = 1.3452342
a = str(a)

#Noktadan önceki basamak sayısını bulalım
x = len(a.split(".")[0]) + 1 #1 eklememin nedeni . karakterinin de bulunması

#Bu değişken de noktadan sonra kaç basamağı alacağınızı göstersin
y = 3

z = x + y
print(a[0:z])
 
round(0.23999999999, 2) işinizi görür. Burada 2, virgülden sonraki basamak sayısını belirler.

Örnek kullanım:
Python:
rounded = round(0.23999999999, 2)

Hocam bu yöntem dediğim gibi 0.24'e yuvarlıyor, benim istediğim 0.23 olması.
 
Hocam bu yöntem dediğim gibi 0.24'e yuvarlıyor, benim istediğim 0.23 olması.
math.floor(x) sayıyı aşağı yuvarlar. Tabii bu metot tam sayı olarak döndürüyor, decimal ayarı yok yanlış bilmiyorsam. Bunun için sayıyı 100 ile çarpıp, aşağı yuvarladıktan sonra tekrar 100'e bölebilirsiniz. Virgülden sonraki basamak sayısına göre kaçla çarpıp kaça böleceğiniz değişir tabii.
 
Bahsi geçen kod da çalışır tabii ancak bu tarz işlemleri String bazlı yapmak kaynak tüketimi bakımından pek de iyi bir fikir değil. Gerçi söz konusu Python olunca kaynak tüketiminin zaten önemsenmediği görülüyor. Yine de programlamayı öğreniyorsunuz sonuçta, yarın kısıtlı kaynaklarla low level bir dilde bu işlemleri yapmak pahalı olur.

Stringler immutable objelerdir, yani değiştirilemezler. Siz üzerinde bir değişiklik yaptığınızda aslında arkada yeni Stringler oluşturuluyor, gereksiz olanlar da temizlenene kadar bellekte kalıyor. Bunları Java üzerinden anlatıyorum, Python'da bunun nasıl olduğundan pek emin değilim ancak çok yüksek ihtimalle aynı olmalı.
 

Yeni mesajlar

Geri
Yukarı