Wie kann man in Ruby die Unendlichkeit ausdrücken?


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


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

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

Funktioniert auch und sieht meiner Meinung nach besser aus als Float :: INFINITY
Alexander Gorg
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.