同样 "NaN".to_f 返回 0 而不是 NaN。
tom hanky
问问题
16092 次
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.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
于 2009-04-30T19:40:25.027 回答
0
这样就可以在 Rails 中分配一个变量(对单元测试很有用):
o.amount = BigDecimal.new('NaN')
expect(o.valid?).to be false
于 2014-08-01T09:36:36.780 回答