Çözüldü Python ondalık bir sayıyı istediğimiz basamağa kısaltma

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

deezwend

Hectopat
Katılım
28 Haziran 2021
Mesajlar
294
Çözümler
4
Daha fazla  
Cinsiyet
Erkek
Merhaba, araştırdım fakat bulamadım o yüzden buraya konu açıyorum. Benim bir ondalık sayım var mesela "1.5164324" sayım. Ben bu sayıyı "1.51" şeklinde kısaltmak istiyorum. Biraz araştırdım ve "round" fonksiyonunu buldum fakat bu fonksiyon da sayıyı yuvarlıyor tam benim istediğim sonucu kesinlikle vermiyor. Nasıl yapabileceğim hakkında yardımcı olabilirseniz çok sevinirim. Bir de mantığı anlamam amacıyla detaylıca anlatabilirseniz nerde ne yapmam gerektiğini, gerçekten çok sevinirim. İyi günler.
 
Çözüm
Bunu da denedim bu da yuvarladı sayıyı maalesef. Ben de şöyle bir çözüm buldum bu forumda:
Python:
sayi = 55.51677124
sayi = str(sayi) # nokta ayırma işlemi için split kullanacağım bu yüzden string yaptım

x = len(sayi.split(".")[0]) #burada sayıyı noktadan itibaren oluşturuyor ve liste oluşturuyor ilk indeks'ini aldık

y = x + 2+1 # 2 sayısı hangi basamağa kadar kırpılmasını istediğimiz sayı 1 ise normal sayıda "." olduğu için

print(float(sayi[0:y]))
@kubricklynch hocam ben Web Scraping yapıyorum ve ondalık sayıları oradan çekiyorum. Fark ettim ki bu önerdiğiniz yol da yuvarlama yapıyormuş. Önerebileceğiniz başka bir şey var mı?
 
stackoverflow

Python:
import math

def truncate(f, n):
    return math.trunc(f * 10 ** n) / 10 ** n

print(truncate(5.8782, 2))

Çıktı:
Kod:
5.87

Mantığı basit, aşağıdaki işlemlerden anlarsın:
Kod:
Sayı: 5.8782
"."dan sonra istediğin basamak sayısı: 2

5.8782 * (10^2) = 587.82
math.trunc(587.82) = 587
587 / (10^2) = 5.87
 
Bunu da denedim bu da yuvarladı sayıyı maalesef. Ben de şöyle bir çözüm buldum bu forumda:
Python:
sayi = 55.51677124
sayi = str(sayi) # nokta ayırma işlemi için split kullanacağım bu yüzden string yaptım

x = len(sayi.split(".")[0]) #burada sayıyı noktadan itibaren oluşturuyor ve liste oluşturuyor ilk indeks'ini aldık

y = x + 2+1 # 2 sayısı hangi basamağa kadar kırpılmasını istediğimiz sayı 1 ise normal sayıda "." olduğu için

print(float(sayi[0:y]))
 
Çözüm
Benim yolladığım da yuvarlamıyor ki. Virgülden sonra gelecek basamak sayısını belirtiyor sadece. Round komutu yuvarlıyor.
Kod:
sayi = 55.51677124
print(f"{sayi:.2f}")

Bunu yaptığımda 55.51 vermesi gerekirken 55.52 veriyor hocam.

Yuvarladığı bir örneği paylaşır mısın? Kodda yuvarlayabilecek bir bölüm bulunmuyor bildiğim kadarıyla.
Çok özür dilerim bunu daha önce denemiştim sandım. Bu da çalışıyor. Aklımda math kütüphanesi ile denediğim başka bir yol kalmış.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…