我可以通过
获得Infinity
和NaN
n = 9.0 / 0 #=> Infinity
n.class #=> Float
m = 0 / 0.0 #=> NaN
m.class #=> Float
但是当我想直接访问Infinity
或NaN
时:
Infinity #=> uninitialized constant Infinity (NameError)
NaN #=> uninitialized constant NaN (NameError)
什么是Infinity
和NaN
?它们是对象,关键字还是其他什么?
答案 0 :(得分:5)
您看到打印为Infinity
和NaN
的内容只是Float
类的两个特殊实例的字符串表示形式,而不是关键字或文字。它们由浮点除以0或引用常量Float::INFINITY
和Float::NAN
返回。
Float::INFINITY.class
# => Float
Float::INFINITY.to_s
# => "Infinity"
Float::NAN.class
# => Float
Float::NAN.to_s
# => "NaN"
答案 1 :(得分:3)