0.1+0.2
eklediğimde 0.30000000000000004
alıyorum ama aynı sayıyı ruby 1.8.7
'a eklediğimde doğru yanıtı 0.3
alıyorum. Ben yuvarlayarak 0.3
olsun ama sadece 0.1
ve 0.2
ruby-1.9.2 ile eklenme hatası
cevap
İş yapmak için bunun için büyük boyutlu olması gerekir.
'" Ruby'nin hatası olduğu için "- bu bir hata değil - kayan nokta nasıl çalışır - bir hata olarak iddia eden hata raporu reddedildi olarak işaretlendi. –
Teşekkürler Andrew .. – a5his
Eski yakut sana yalan ekleyerek ruby 1.9.2
üzerinde 0.3
almak istiyorum:
$ ruby -v
ruby 1.8.7 (2010-06-23 patchlevel 299) [x86_64-linux]
$ irb
irb(main):001:0> printf("%40.40f\n", 0.1 + 0.2)
0.3000000000000000444089209850062616169453
=> nil
Floating point numbers çok zor hayvanlardır.
Bu ilginç bir kavramdır: Size yalan söyledi ve size doğru cevabı verdim, bunu yapmamalıydı. Kayan nokta _is_ eğlence! –
@Andrew Marshall, güldüğünüz için teşekkürler. :) – sarnold
Ben ruble-1.8.7-head kullanıyordum, patchlevel değil. –
olası çift [yakut: Ruby tamsayı şamandıra dönüştürme garip sonuçlar üretir] (http://stackoverflow.com/questions/5255629/ruby
renkli Aşağıda -Çevreden-için-tamsayı-içinde-ruby-üretir-garip-sonuçlar) –