Bagaimana saya bisa mewakili angka tak terbatas dengan python? Tidak peduli nomor mana yang Anda masukkan dalam program, tidak ada angka yang harus lebih besar dari representasi infinity ini.
Bagaimana saya bisa mewakili angka tak terbatas dengan python? Tidak peduli nomor mana yang Anda masukkan dalam program, tidak ada angka yang harus lebih besar dari representasi infinity ini.
Jawaban:
Dengan Python, Anda bisa melakukan:
test = float("inf")
Di Python 3.5, Anda dapat melakukan:
import math
test = math.inf
Lalu:
test > 1
test > 10000
test > x
Akan selalu benar. Kecuali tentu saja, seperti yang ditunjukkan, x juga tak terbatas atau "nan" ("bukan angka").
Selain itu (Python 2.x ONLY), dibandingkan dengan Ellipsis, float(inf)lebih rendah, misalnya:
float('inf') < Ellipsis
akan kembali benar.
Ellipsis, yang membandingkan lebih besar dari segalanya, termasuk tak terhingga. float("inf") < Ellipsismengembalikan True
math.inf < ...atau float('inf') > Ellipsismelempar TypeError: unorderable types: float() < ellipsis(), setidaknya untuk saya.
Karena Python 3.5 Anda dapat menggunakan math.inf:
>>> import math
>>> math.inf
inf
Saya tidak tahu persis apa yang Anda lakukan, tetapi float("inf")memberi Anda float Infinity, yang lebih besar dari angka lainnya.
Ada tak terhingga di perpustakaan NumPy: from numpy import inf. Untuk mendapatkan infinity negatif seseorang cukup menulis -inf.
Cara lain yang kurang nyaman adalah dengan menggunakan Decimalkelas:
from decimal import Decimal
pos_inf = Decimal('Infinity')
neg_inf = Decimal('-Infinity')
Decimal('Infinity') == float('inf')pengembalian True, jadi hampir sama.
float('inf') is float('inf')kembali Falsejuga
float('inf') is float('inf')-> False, hanya menyatakan bahwa mereka adalah objek yang berbeda dengan kasus yang berbeda, tetapi tidak bahwa isi internal yang berbeda - sebenarnya sebagai @nemesisdesign menunjuk float('int') == float('int')berpegang True. Ini adalah masalah yang sama seperti membandingkan objek yang bisa berubah seperti [1,2,3] adalah [1,2,3] dan [1,2,3] == [1,2,3], yang, dalam urutan, False dan Benar .. Info lebih lanjut lihat: stackoverflow.com/questions/2988017/…
Di python2.x ada hack kotor yang melayani tujuan ini (JANGAN PERNAH menggunakannya kecuali benar-benar diperlukan):
None < any integer < any string
Dengan demikian, cek i < ''berlaku Trueuntuk bilangan bulat apa pun i.
Sudah cukup ditinggalkan di python3. Sekarang perbandingan seperti itu berakhir dengan
TypeError: unorderable types: str() < int()
MIN_INFINITY = None; INFINITY = "inf"; MIN_INFINITY < x < INFINITY
Juga jika Anda menggunakan SymPy yang dapat Anda gunakan sympy.oo
>>> from sympy import oo
>>> oo + 1
oo
>>> oo - oo
nan
dll.
math.infberguna sebagai nilai awal dalam masalah optimisasi, karena ia bekerja dengan benar dengan min, mis.min(5, math.inf) == 5. Misalnya, dalam algoritme jalur terpendek, Anda dapat mengatur jarak yang tidak diketahuimath.inftanpa perlu menggunakan case khususNoneatau menganggap batas atas9999999. Demikian pula, Anda dapat menggunakan-math.infsebagai nilai awal untuk masalah maksimalisasi.