Infinity 和 NaN 的类型都有哪些?

Posted

技术标签:

【中文标题】Infinity 和 NaN 的类型都有哪些?【英文标题】:What are the types of Infinity and NaN?Infinity 和 NaN 的类型有哪些? 【发布时间】:2013-08-29 22:13:31 【问题描述】:

我可以通过

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

Float::INFINITY 一般用于表示无穷大,例如loop.size 也返回它。 我本来应该问点别的,但我问了一些不同的问题..我会带着我的问题回来..我认为您在回答中遗漏了一些东西...:)【参考方案2】:

如果你想要 inf/nan 字面量,使用 follow:

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

见Float constants list

【讨论】:

以上是关于Infinity 和 NaN 的类型都有哪些?的主要内容,如果未能解决你的问题,请参考以下文章

java豆知识——NFINITY,-INFINITY和NAN

java豆知识——NFINITY,-INFINITY和NAN

如何在 ANSI C 中生成 NaN、-Infinity 和 +Infinity?

数据类型

javascript 数据类型

使用 Infinity 和 NaN 禁用异常