7

我可以Infinity通过NaN

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)

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

4

2 回答 2

5

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

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

Float::NAN.class
# => Float
Float::NAN.to_s
# => "NaN"
于 2013-08-27T09:09:39.450 回答
4

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

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

请参阅浮点常量列表

于 2013-08-27T08:42:20.880 回答