Wie kann man in Ruby die Unendlichkeit ausdrücken?

134

Gibt es ein Schlüsselwort, um Infinity in Ruby auszudrücken?

Amokrane Chentir
quelle

Antworten:

187

Wenn Sie Ruby 1.9.2 verwenden, können Sie Folgendes verwenden :

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

Oder Sie können Ihre eigene Konstante mit dem folgenden * erstellen:
Ich habe überprüft, ob Sie in Ruby 1.8.6, 1.8.7 und 1.9.2 Float.infinite haben. .

PositiveInfinity = +1.0/0.0 
=> Infinity

NegativeInfinity = -1.0/0.0 
=> -Infinity

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

* Ich habe dies in Ruby 1.8.6 und 1.9.2 überprüft

Matt
quelle
2
Richtig. Ich habe versucht, Vergleiche zwischen einer Ganzzahl und diesem Wert anzustellen, und es scheint gut zu funktionieren. Ich frage mich jetzt nur, ob das sicher ist!
Amokrane Chentir
1
Es gibt hier einen schönen Artikel, der die Eigenschaften von Infinity in Ruby beschreibt (einschließlich Infinity, abgeleitet durch Teilen durch 0): nithinbekal.com/posts/ruby-infinity - sollte Ihnen eine Vorstellung davon geben, ob es sicher ist oder nicht. (Für das, was es wert ist, ist IMHO das Herumspielen mit numerischen Unendlichkeitswerten praktisch nie sicher oder wirklich notwendig, unabhängig davon, welche Programmiersprache Sie verwenden, es sei denn, Sie erledigen tatsächlich mathematische Arbeit)
Andrew Faulkner
Das ist großartig, danke, ich glaube, Sie können auch -Float::INFINITYfür negative Unendlichkeit tun .
Saleh Rastani
97

Kein Schlüsselwort, aber 1.9.2 hat eine Konstante dafür:

>> Float::INFINITY #=> Infinity
>> 3 < Float::INFINITY #=> true
Michael Kohl
quelle
+1, ich wusste nicht, dass dies in 1.9.2 war. Ich habe meine Antwort aktualisiert und die Leute zu Ihrer Antwort weitergeleitet, wenn dies die Version ist, auf die sie abzielen.
Matt
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)>
davidtingsu
quelle
Funktioniert auch und sieht meiner Meinung nach besser aus als Float :: INFINITY
Alexander Gorg