Rubyで無限を表現する方法は?


回答:


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

1
RubyのInfinityのプロパティを説明する素晴らしい記事があります(0で除算して導出されたInfinityを含む):nithinbekal.com/posts/ruby-infinity-それが安全かどうかがわかります。(その価値については、実際の数学関連の作業を行わない限り、使用しているプログラミング言語に関係なく、IMHOが数値の無限値をいじるのは事実上決して安全でもなく、本当に必要でもありません)
Andrew Faulkner

これは素晴らしいことです。おかげで、-Float::INFINITY負の無限大にも対応できると思います。
Saleh Rastani 2019

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

同様に機能し、IMHOはFloat :: INFINITYよりも見栄えが良い
Alexander Gorg
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.