Python'da 0,2 + 0,1 İşleminin sonucu neden "0.30000000000000004" çıkıyor? Ve nasıl 0,3 bulunur?

A.Hakan Cansız

Decapat
Katılım
21 Temmuz 2020
Mesajlar
9
Yazdığım kodda 0 ile 10 arasındaki ondalık sayıları 0,1 arttırarak listeye eklemek istiyorum.

[CODE lang="python" title="python"]sayilar = []

for i in range(10):
sayilar.append(a)
a += 0.1

print(sayilar)[/CODE]

Fakat bu çıktıyı alıyorum:
[0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6, 0.7, 0.7999999999999999, 0.8999999999999999]
Düzeltmek için ne yapmam lazım?
 

Dosya Ekleri

  • Ekran görüntüsü 2022-04-10 001816.png
    38,5 KB · Görüntüleme: 103
Sıfır ile on arasında on tane mi ondalık var da döngün on defa çalışıyor?

Yuvarlamak için round fonksiyonunu kullanabilirsin.
 
Bunun olma sebebi, IEEE 754 formatının ikilik bilimsel gösterim şeklinde işlem yapmasıdır. Fakat işler beklenildiği gibi temiz gitmiyor çünkü sonsuzluğa doğru giden reel sayı dizisini anca bu kadar bit seviyesine sığdırabiliyoruz. Bu sitedeki araç senin daha iyi anlamanı sağlayabilir.
 
Beğendiğim mesajlarda gerçek nedeni anlatılmış. Ancak computerphile'in bu konudaki ilgili videosunu paylaşmadan edemeyeceğim.

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
 
Teşekkürler. Bakacağım.
Teşekkürler.
Teşekkürler.
Round Fonkisyonunu kullanacağım şimdilik. Şimdilik bu kadar.
 
Son düzenleme:
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…