41

また、"NaN".to_f は NaN の代わりに 0 を返します。

4

5 に答える 5

51

Ruby 1.9.3以降、NaN値を取得する定数があります

Float::NAN
=> NaN
于 2013-09-24T23:17:55.170 に答える
31

数値がNaNであるかどうかをテストする必要がある場合は、次のよう#nan?に使用できます。

ruby-1.8.7-p352 :008 > (0/0.0).nan? #=> true 
ruby-1.8.7-p352 :009 > (0/1.0).nan? #=> false 
于 2012-01-04T10:41:05.223 に答える
17

最も簡単な方法は、 を使用すること0.0 / 0.0です。"NaN".to_f は機能しません。その理由について、このスレッドでいくつかの議論があります。

于 2009-04-30T19:41:39.967 に答える
3

0.0 / 0.0Ruby 1.8.6で動作します。

Pesto によってリンクされたスレッドにはこの関数があり、IEEE 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
于 2009-04-30T19:40:25.027 に答える
0

Assigning a variable in Rails can be done thus (useful for unit-testing):

o.amount = BigDecimal.new('NaN')
expect(o.valid?).to be false
于 2014-08-01T09:36:36.780 に答える