Infinity和NaN有哪些类型?

时间:2013-08-27 08:39:40

标签: ruby nan infinity

我可以通过

获得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?它们是对象,关键字还是其他什么?

2 个答案:

答案 0 :(得分:5)

您看到打印为InfinityNaN的内容只是Float类的两个特殊实例的字符串表示形式,而不是关键字或文字。它们由浮点除以0或引用常量Float::INFINITYFloat::NAN返回。

Float::INFINITY.class
# => Float
Float::INFINITY.to_s
# => "Infinity"

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

答案 1 :(得分:3)

如果您想要inf / nan文字,请使用以下:

>> Float::INFINITY
=> Infinity
>> Float::NAN
=> NaN

请参阅Float constants list