Auch "NaN" .to_f gibt 0 statt NaN zurück.Wie deklariere ich NaN (keine Zahl) in Ruby?
37
A
Antwort
2
0.0/0.0
funktioniert für mich auf Ruby 1.8.6.
Der Faden verbunden durch Pesto hat diese Funktion, die auf Plattformen arbeiten sollte wo Gleitkommazahlen IEEE implementiert nach 754:
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
Der einfachste Weg 0.0/0.0
zu verwenden ist. "NaN" .to_f funktioniert nicht, und es gibt eine Diskussion in this thread über warum.
+4
'0/0.0' funktioniert auch .. (PS. DAS IST INSANE!) –
30
Wenn Sie testen müssen, ob eine Zahl NaN ist, können Sie #nan?
auf sie aus:
ruby-1.8.7-p352 :008 > (0/0.0).nan? #=> true
ruby-1.8.7-p352 :009 > (0/1.0).nan? #=> false
45
0
zu erhalten Das Zuweisen einer Variablen in Rails kann so erfolgen (nützlich für Komponententests):
o.amount = BigDecimal.new('NaN')
expect(o.valid?).to be false
das gibt ZeroDivisionE rror: dividiert durch 0 –
Welche Version von Ruby verwenden Sie? –
Hinweis: 0/0 gibt einen ZeroDivisionError, aber 0.0/0.0 nicht. – Kudu