Ruby'de sonsuzluğu nasıl ifade edebilirim?


Yanıtlar:


187

Ruby 1.9.2 kullanıyorsanız şunları kullanabilirsiniz :

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

Veya aşağıdakileri kullanarak kendi sabitinizi oluşturabilirsiniz *:
Ruby 1.8.6, 1.8.7 ve 1.9.2'de Float.infinite olup olmadığını kontrol ettim. .

PositiveInfinity = +1.0/0.0 
=> Infinity

NegativeInfinity = -1.0/0.0 
=> -Infinity

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

* Bunu Ruby 1.8.6 ve 1.9.2'de doğruladım


2
Sağ. Herhangi bir tamsayı ve bu değer arasında karşılaştırma yapmaya çalıştım ve iyi çalışıyor gibi görünüyor. Sadece bunun güvenli olup olmadığını merak ediyorum!
Amokrane Chentir

1
Burada Ruby'deki Infinity özelliklerini açıklayan güzel bir makale var (0'a bölünerek türetilmiş Infinity dahil): nithinbekal.com/posts/ruby-infinity - güvenli olup olmadığı konusunda size bir fikir vermelidir. (Değeri ne olursa olsun, IMHO, sayısal Infinity değerleriyle uğraşmak, gerçek matematikle ilgili çalışma yapmadıkça hangi programlama dilini kullandığınızdan bağımsız olarak neredeyse hiçbir zaman güvenli değildir veya gerçekten gerekli değildir)
Andrew Faulkner

Bu harika, teşekkürler, -Float::INFINITYnegatif sonsuzluk için de yapabileceğinize inanıyorum .
Saleh Rastani

97

Anahtar kelime yok, ancak 1.9.2'de bunun için bir sabit var:

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

+1, bunun 1.9.2'de olduğunu fark etmedim. Hedefledikleri sürüm buysa insanları yanıtınıza yönlendiren cevabımı güncelledim.
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)>

İyi çalışıyor ve IMHO, Float'tan daha iyi görünüyor :: INFINITY
Alexander Gorg
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.