如何在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
答
无关键词,但是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)>
对。我试图做任何整数和该值之间的比较,它似乎工作正常。我只是想知道如果这是安全的! – 2011-04-25 12:38:54
这里有一篇很好的文章,描述了Infinity在Ruby中的特性(包括通过除以0得到的Infinity):http://nithinbekal.com/posts/ruby-infinity/ - 应该给你一个关于它是否安全的想法。 (对于什么是值得的,恕我直言,使用数值无穷大的数值实际上并不安全或真正需要,无论您使用什么编程语言,除非您正在进行与数学相关的实际工作) – 2016-01-02 10:54:53