如何在Ruby中表达无穷大?

问题描述:

在Ruby中是否有关键字来表示Infinity?如何在Ruby中表达无穷大?

如果您使用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

对。我试图做任何整数和该值之间的比较,它似乎工作正常。我只是想知道如果这是安全的! – 2011-04-25 12:38:54

+1

这里有一篇很好的文章,描述了Infinity在Ruby中的特性(包括通过除以0得到的Infinity):http://nithinbekal.com/posts/ruby-infinity/ - 应该给你一个关于它是否安全的想法。 (对于什么是值得的,恕我直言,使用数值无穷大的数值实际上并不安全或真正需要,无论您使用什么编程语言,除非您正在进行与数学相关的实际工作) – 2016-01-02 10:54:53

无关键词,但是1.9.2有这样一个常数:

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

+1,我没有意识到这是1.9.2。如果这是他们的目标版本,我已经更新了我的答案,指导人们回答您的答案。 – Matt 2011-04-25 13:04:11

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)>