¿Cómo expresar el infinito en Ruby?


Respuestas:


187

Si usa ruby ​​1.9.2, puede usar :

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

O puede crear su propia constante usando lo siguiente *:
¿He comprobado que en Ruby 1.8.6, 1.8.7 y 1.9.2 tiene Float.infinite? .

PositiveInfinity = +1.0/0.0 
=> Infinity

NegativeInfinity = -1.0/0.0 
=> -Infinity

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

* He verificado esto en Ruby 1.8.6 y 1.9.2


2
Correcto. Intenté hacer comparaciones entre cualquier número entero y ese valor y parece estar funcionando bien. ¡Ahora me pregunto si esto es seguro!
Amokrane Chentir

1
Aquí hay un buen artículo que describe las propiedades de Infinity en Ruby (incluido Infinity derivado mediante la división entre 0): nithinbekal.com/posts/ruby-infinity : debería darle una idea de si es seguro o no. (Por lo que vale, en mi humilde opinión perder el tiempo con valores infinitos numéricos prácticamente nunca es seguro o realmente necesario, independientemente del lenguaje de programación que esté utilizando, a menos que esté haciendo un trabajo real relacionado con las matemáticas)
Andrew Faulkner

Esto es genial, gracias, creo que también puedes hacerlo -Float::INFINITYpor infinito negativo.
Saleh Rastani

97

Sin palabra clave, pero 1.9.2 tiene una constante para esto:

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

+1, no me di cuenta de que esto estaba en 1.9.2. He actualizado mi respuesta dirigiendo a las personas a su respuesta si esa es la versión a la que apuntan.
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)>

Funciona bien y, en mi humilde opinión, se ve mejor que Float :: INFINITY
Alexander Gorg
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.