Ya - gunakan math.nan
.
>>> from math import nan
>>> print(nan)
nan
>>> print(nan + 2)
nan
>>> nan == nan
False
>>> import math
>>> math.isnan(nan)
True
Sebelum Python 3.5, seseorang dapat menggunakan float("nan")
(case insensitive).
Perhatikan bahwa memeriksa untuk melihat apakah dua hal yang NaN sama satu sama lain akan selalu menghasilkan nilai salah. Ini sebagian karena dua hal yang "bukan angka" tidak dapat (secara tegas) dikatakan sama satu sama lain - lihat Apa alasan untuk semua perbandingan yang mengembalikan nilai false untuk IEEE754 NaN? untuk detail dan informasi lebih lanjut.
Sebaliknya, gunakan math.isnan(...)
jika Anda perlu menentukan apakah suatu nilai adalah NaN atau tidak.
Selain itu, semantik ==
operasi yang tepat pada nilai NaN dapat menyebabkan masalah halus saat mencoba menyimpan NaN di dalam jenis penampung seperti list
atau dict
(atau saat menggunakan jenis penampung khusus). Lihat Memeriksa keberadaan NaN di wadah untuk lebih jelasnya.
Anda juga dapat membuat angka NaN menggunakan modul desimal Python :
>>> from decimal import Decimal
>>> b = Decimal('nan')
>>> print(b)
NaN
>>> print(repr(b))
Decimal('NaN')
>>>
>>> Decimal(float('nan'))
Decimal('NaN')
>>>
>>> import math
>>> math.isnan(b)
True
math.isnan(...)
juga akan bekerja dengan objek Desimal.
Namun, Anda tidak dapat membuat bilangan NaN dalam modul pecahan Python :
>>> from fractions import Fraction
>>> Fraction('nan')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python35\lib\fractions.py", line 146, in __new__
numerator)
ValueError: Invalid literal for Fraction: 'nan'
>>>
>>> Fraction(float('nan'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python35\lib\fractions.py", line 130, in __new__
value = Fraction.from_float(numerator)
File "C:\Python35\lib\fractions.py", line 214, in from_float
raise ValueError("Cannot convert %r to %s." % (f, cls.__name__))
ValueError: Cannot convert nan to Fraction.
Kebetulan, Anda juga dapat melakukan float('Inf')
, Decimal('Inf')
atau math.inf
(3.5 +) untuk menetapkan jumlah tak terbatas. (Dan juga lihat math.isinf(...)
)
Namun melakukan Fraction('Inf')
atau Fraction(float('inf'))
tidak diizinkan dan akan mengeluarkan pengecualian, seperti NaN.
Jika Anda ingin cara yang cepat dan mudah untuk memeriksa apakah suatu nomor bukan NaN atau tidak terbatas, Anda dapat menggunakan math.isfinite(...)
mulai Python 3.2+.
Jika Anda ingin melakukan pemeriksaan serupa dengan bilangan kompleks, cmath
modul berisi sekumpulan fungsi dan konstanta yang serupa dengan math
modul: