Jak wyrazić nieskończoność w Rubim?

134

Czy istnieje słowo kluczowe wyrażające Infinity w Rubim?

Amokrane Chentir
źródło

Odpowiedzi:

187

Jeśli używasz ruby ​​1.9.2, możesz użyć :

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

Lub możesz stworzyć własną stałą, używając następującego *:
Sprawdziłem, że w Rubim 1.8.6, 1.8.7 i 1.9.2 masz Float.infinite? .

PositiveInfinity = +1.0/0.0 
=> Infinity

NegativeInfinity = -1.0/0.0 
=> -Infinity

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

* Sprawdziłem to w Rubim 1.8.6 i 1.9.2

Matt
źródło
2
Dobrze. Próbowałem porównać dowolną liczbę całkowitą z tą wartością i wydaje się, że działa dobrze. Zastanawiam się teraz, czy to jest bezpieczne!
Amokrane Chentir
1
Jest tutaj fajny artykuł opisujący właściwości Infinity w Rubim (w tym Infinity uzyskaną przez podzielenie przez 0): nithinbekal.com/posts/ruby-infinity - powinien dać ci wyobrażenie, czy jest bezpieczny, czy nie. (Jeśli chodzi o to, co jest warte, IMHO majstrowanie przy liczbowych wartościach nieskończoności praktycznie nigdy nie jest bezpieczne ani naprawdę potrzebne, niezależnie od używanego języka programowania, chyba że wykonujesz rzeczywistą pracę związaną z matematyką)
Andrew Faulkner,
To świetnie, dzięki, wierzę, że możesz też zrobić -Float::INFINITYdla nieskończoności ujemnej.
Saleh Rastani,
97

Brak słowa kluczowego, ale 1.9.2 ma stałą dla tego:

>> Float::INFINITY #=> Infinity
>> 3 < Float::INFINITY #=> true
Michael Kohl
źródło
+1, nie zdawałem sobie sprawy, że to było w 1.9.2. Zaktualizowałem moją odpowiedź, kierując ludzi do Twojej odpowiedzi, jeśli jest to wersja, do której są skierowani.
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
źródło
Działa również i, IMHO, wygląda lepiej niż Float :: INFINITY
Alexander Gorg