什么是无穷大和NaN的类型?

8

我可以通过以下方式获得InfinityNaN

n = 9.0 / 0 #=> Infinity
n.class #=> Float

m = 0 / 0.0 #=> NaN
m.class #=> Float

但是当我想直接访问InfinityNaN时:

Infinity #=> uninitialized constant Infinity (NameError)
NaN #=> uninitialized constant NaN (NameError)

InfinityNaN是什么?它们是对象、关键字还是其他什么东西?


简而言之:拼写是不同的,你必须全部大写,如Float::INFINITYFloat::NAN - Cadoiz
2个回答

5
你所看到的InfinityNaN只是Float类的两个特殊实例的字符串表示,而不是关键字或字面量。它们是通过浮点数除以0或引用常量Float::INFINITYFloat::NAN返回的。请注意,这里保留了HTML标签。
Float::INFINITY.class
# => Float
Float::INFINITY.to_s
# => "Infinity"

Float::NAN.class
# => Float
Float::NAN.to_s
# => "NaN"

1
Float::INFINITY 用于表示无穷大,例如loop.size也会返回它。 - Stefan
我本来想问另外一件事,但是我问了不同的问题。我会回来再问我的问题。我觉得你在回答中漏掉了某些东西... :) - Arup Rakshit

4
如果您想要使用inf/nan字面量,请使用以下方法:
>> Float::INFINITY
=> Infinity
>> Float::NAN
=> NaN

请查看浮点数常量列表

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接