如何在Ruby中声明NaN(不是数字)?

39 ruby nan

"NaN".to_f也返回0而不是NaN.

Kon*_*che 48

从Ruby 1.9.3开始,有一个常量来获取NaN值

Float::NAN
=> NaN
Run Code Online (Sandbox Code Playgroud)


Kos*_*tas 30

如果您需要测试一个数字是否为NaN,您可以使用#nan?它:

ruby-1.8.7-p352 :008 > (0/0.0).nan? #=> true 
ruby-1.8.7-p352 :009 > (0/1.0).nan? #=> false 
Run Code Online (Sandbox Code Playgroud)


Pes*_*sto 17

最简单的方法是使用0.0 / 0.0."NaN".to_f不起作用,并且在这个帖子中有一些关于原因的讨论.

  • `0/0.0`也有效..(PS.这是INSANE!) (4认同)

Nat*_*hen 3

0.0 / 0.0我在 ruby​​ 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
Run Code Online (Sandbox Code Playgroud)

  • 注意:0/0 给出 ZeroDivisionError,但 0.0 / 0.0 则不会。 (2认同)