예- math.nan
.
>>> from math import nan
>>> print(nan)
nan
>>> print(nan + 2)
nan
>>> nan == nan
False
>>> import math
>>> math.isnan(nan)
True
Python 3.5 이전 float("nan")
에는 사용할 수있었습니다 (대소 문자 구분 안 함).
NaN 인 두 항목이 서로 같은지 확인하면 항상 false가 반환됩니다. 이는 부분적으로 "숫자가 아닌"두 가지가 (엄격히 말해서) 서로 동일하다고 말할 수 없기 때문 입니다. IEEE754 NaN 값에 대해 false를 반환하는 모든 비교의 근거는 무엇입니까 ?를 참조하십시오 . 자세한 내용과 정보는.
대신 math.isnan(...)
값이 NaN인지 확인해야하는 경우 사용 합니다.
또한 ==
NaN 값 에 대한 작업 의 정확한 의미는 list
또는 같은 컨테이너 유형 내에 NaN을 저장하려고 할 dict
때 (또는 사용자 정의 컨테이너 유형을 사용할 때) 미묘한 문제를 일으킬 수 있습니다 . 자세한 내용 은 컨테이너에서 NaN 존재 확인을 참조 하세요.
Python의 decimal 모듈을 사용하여 NaN 숫자를 구성 할 수도 있습니다 .
>>> 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(...)
Decimal 객체에서도 작동합니다.
그러나 Python의 fractions 모듈 에서는 NaN 숫자를 생성 할 수 없습니다 .
>>> 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.
덧붙여, 당신은 또한 할 수있다 float('Inf')
, Decimal('Inf')
또는 math.inf
(3.5)는 무한 번호를 할당 할 수 있습니다. (또한 참조 math.isinf(...)
)
그러나 허용 Fraction('Inf')
되거나 Fraction(float('inf'))
허용되지 않으며 NaN과 마찬가지로 예외가 발생합니다.
숫자가 NaN도 무한도 아닌지 확인하는 빠르고 쉬운 방법을 원한다면 math.isfinite(...)
Python 3.2 이상부터 사용할 수 있습니다 .
복소수로 유사한 검사를 수행하려면 cmath
모듈에 모듈과 유사한 함수 및 상수 세트가 포함됩니다 math
.