Comment exprimer l'infini en Ruby?

134

Existe-t-il un mot-clé pour exprimer Infinity en Ruby?

Amokrane Chentir
la source

Réponses:

187

Si vous utilisez ruby ​​1.9.2, vous pouvez utiliser :

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

Ou vous pouvez créer votre propre constante en utilisant ce qui suit *:
J'ai vérifié que dans Ruby 1.8.6, 1.8.7 et 1.9.2 vous avez Float.infinite? .

PositiveInfinity = +1.0/0.0 
=> Infinity

NegativeInfinity = -1.0/0.0 
=> -Infinity

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

* J'ai vérifié cela dans Ruby 1.8.6 et 1.9.2

Mat
la source
2
Droite. J'ai essayé de faire des comparaisons entre n'importe quel entier et cette valeur et cela semble fonctionner correctement. Je me demande juste maintenant si c'est sûr!
Amokrane Chentir
1
Il y a un bel article ici décrivant les propriétés d'Infinity dans Ruby (y compris Infinity dérivé en divisant par 0): nithinbekal.com/posts/ruby-infinity - devrait vous donner une idée si c'est sûr ou non. (Pour ce que ça vaut, à mon humble avis, jouer avec les valeurs numériques Infinity n'est pratiquement jamais sûr ni vraiment nécessaire quel que soit le langage de programmation que vous utilisez, à moins que vous ne fassiez un travail réel lié aux mathématiques)
Andrew Faulkner
C'est génial, merci, je crois que vous pouvez aussi le faire -Float::INFINITYpour l'infini négatif.
Saleh Rastani
97

Pas de mot-clé, mais 1.9.2 a une constante pour cela:

>> Float::INFINITY #=> Infinity
>> 3 < Float::INFINITY #=> true
Michael Kohl
la source
+1, je ne savais pas que c'était en 1.9.2. J'ai mis à jour ma réponse pour diriger les gens vers votre réponse si c'est la version qu'ils ciblent.
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
la source
Fonctionne aussi et, à mon humble avis, a l'air mieux que Float :: INFINITY
Alexander Gorg