Ayrıca "NaN" .to_f, NaN yerine 0 değerini döndürür. Benim için yakut 1.8.6 üzerinde çalışıyorRuby'de NaN (sayı değil) nasıl bildirilir?
37
A
cevap
2
0.0/0.0
.
0.0/0.0
kullanmaktır
def aNaN
s, e, m = rand(2), 2047, rand(2**52-1)+1
[sprintf("%1b%011b%052b", s,e,m)].pack("B*").unpack("G").first
end
17
:
Pesto tarafından bağlanan iplik kayan noktalı sayılar IEEE 754'e uygun gerçekleştirilmiş olan yerlerde platformlarda çalışmalıdır bu işlevi vardır. "NaN" .to_f çalışmıyor ve neden hakkında bazı tartışmalar var in this thread. Eğer bir numara NaN olup olmadığını test etmek gerekirse
+4
'0/0.0' da çalışır .. (PS. BU INSANE!) –
30
, üzerinde #nan?
kullanabilirsiniz:
ruby-1.8.7-p352 :008 > (0/0.0).nan? #=> true
ruby-1.8.7-p352 :009 > (0/1.0).nan? #=> false
45
0
Rails'e bir değişken atamak böylece (birim testi için yararlı): ZeroDivisionE'yi veren
o.amount = BigDecimal.new('NaN')
expect(o.valid?).to be false
rror: by bölünmüş 0 –
Hangi Ruby sürümünü kullanıyorsunuz? –
Not: 0/0 bir ZeroDivisionError verir, ancak 0.0/0.0 değil. – Kudu