Çö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
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]))
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
 
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ış.
 
Arkadaşın yazdığı yöntemde yuvarlamıyor. Onu kullanabilirsin istersen.
 

Dosya Ekleri

  • Ekran görüntüsü 2022-07-13 195512.png
    Ekran görüntüsü 2022-07-13 195512.png
    21,9 KB · Görüntüleme: 59

Technopat Haberler

Yeni konular

Geri
Yukarı