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.