如何在Ruby中表达无穷大?


Answers:


187

如果您使用ruby 1.9.2,则可以使用

>> Float::INFINITY #=> Infinity
>> 3 < Float::INFINITY #=> true

或者,您可以使用以下*创建自己的常量:
我已经检查了在Ruby 1.8.6、1.8.7和1.9.2中是否具有Float.infinite?

PositiveInfinity = +1.0/0.0 
=> Infinity

NegativeInfinity = -1.0/0.0 
=> -Infinity

CompleteInfinity = NegativeInfinity..PositiveInfinity
=> -Infinity..Infinity

*我已经在Ruby 1.8.6和1.9.2中对此进行了验证


2
对。我试图在任何整数和该值之间进行比较,但似乎工作正常。我现在想知道这是否安全!
Amokrane Chentir 2011年

1
这里有一篇不错的文章,描述了Ruby中Infinity的属性(包括通过除以0得出的Infinity):nithinbekal.com/posts/ruby-infinity-应该让您知道它是否安全。(就价值而言,恕我直言,无论您使用哪种编程语言,都永远不安全或不真正需要使用数字无穷大值,除非您正在从事与数学相关的实际工作)
Andrew Faulkner

太好了,谢谢,我相信您也可以-Float::INFINITY为负无穷大做。
萨利赫斯塔尼

97

没有关键字,但是1.9.2为此具有一个常量:

>> Float::INFINITY #=> Infinity
>> 3 < Float::INFINITY #=> true

+1,我没有意识到这是1.9.2。我已经更新了我的答案,将人们引导到您的答案(如果这是他们的目标版本)。
马特

6

http://www.ruby-doc.org/stdlib-1.9.3/libdoc/bigdecimal/rdoc/BigDecimal.html#label-Infinity

1.9.3p429 :025 > BigDecimal('Infinity')
 => #<BigDecimal:7f8a6c548140,'Infinity',9(9)>
1.9.3p429 :026 > BigDecimal('-Infinity')
 => #<BigDecimal:7f8a6a0e3728,'-Infinity',9(9)>
1.9.3p429 :027 > 3 < BigDecimal('Infinity')
 => true

1.9.3p429 :028 > BigDecimal::INFINITY
 => #<BigDecimal:7f8a6ad046d8,'Infinity',9(9)>

效果也不错,恕我直言,看上去比Float :: INFINITY好
Alexander Gorg
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.