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
    Ekran görüntüsü 2022-04-10 001816.png
    38,5 KB · Görüntüleme: 81
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.
 


Nedenini okuyarak anlayabilirsin.
Teşekkürler. Bakacağım.
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.
Teşekkürler.
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.
Teşekkürler.
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?
Round Fonkisyonunu kullanacağım şimdilik. Şimdilik bu kadar.
 
Son düzenleme:

Yeni konular

Geri
Yukarı