Bagaimana cara mengekspresikan infinity di Ruby?


Jawaban:


188

Jika Anda menggunakan ruby ​​1.9.2, Anda dapat menggunakan :

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

Atau Anda dapat membuat konstanta Anda sendiri menggunakan *:
Saya telah memeriksanya di Ruby 1.8.6, 1.8.7, dan 1.9.2 Anda memiliki Float.infinite? .

PositiveInfinity = +1.0/0.0 
=> Infinity

NegativeInfinity = -1.0/0.0 
=> -Infinity

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

* Saya telah memverifikasi ini di Ruby 1.8.6 dan 1.9.2


2
Baik. Saya mencoba melakukan perbandingan antara bilangan bulat apa pun dan nilai itu dan tampaknya berfungsi dengan baik. Saya hanya ingin tahu sekarang apakah ini aman!
Amokrane Chentir

1
Ada artikel bagus di sini yang menjelaskan properti Infinity di Ruby (termasuk Infinity yang diturunkan melalui pembagian dengan 0): nithinbekal.com/posts/ruby-infinity - akan memberi Anda gambaran apakah itu aman atau tidak. (Untuk apa nilainya, IMHO mengotak-atik nilai Infinity numerik hampir tidak pernah aman atau benar-benar dibutuhkan terlepas dari bahasa pemrograman apa yang Anda gunakan, kecuali Anda melakukan pekerjaan yang berhubungan dengan matematika yang sebenarnya)
Andrew Faulkner

Ini bagus, terima kasih, saya yakin Anda juga bisa melakukannya -Float::INFINITYuntuk ketidakterbatasan negatif.
Saleh Rastani

98

Tidak ada kata kunci, tetapi 1.9.2 memiliki konstanta untuk ini:

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

+1, saya tidak menyadari ini di 1.9.2. Saya telah memperbarui jawaban saya yang mengarahkan orang ke jawaban Anda jika itu adalah versi yang mereka targetkan.
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)>

Berfungsi juga dan, IMHO, terlihat lebih baik daripada Float :: INFINITY
Alexander Gorg
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.