IT/Programming

[Python] python float 'nan', 'inf' 처리

이녀기 2023. 12. 2. 22:12

문제상황

txt에 nan과 inf, float 값이 저장된 파일을 읽어와서 다시 float 값으로 변환하고, nan과 inf는 경계값으로 설정하려 했는데 되지 않았다.

생각해보니 map(float, target_list)에서 에러가 생기지 않아서 'nan', 'inf' 모두 float 함수가 실행되긴 했다는 뜻이었다.

print(float('nan')) # nan
print(type(float('nan')) # <class 'float'>

print(float('nan') == float('nan')) # False
print(float('nan') is float('nan')) # False
print(float('nan') is type(float('nan'))) # False

print(float('inf')) # inf

 

해결

import math

print(math.isnan(float('nan'))) # True
print(float('inf') == float('inf')) # True

 

nan을 체크하는 math 모듈 함수가 존재했다. 파이썬에서 nan은 부동소수점 개념으로 존재한다고 한다.

 

느낀점

당연하다 생각한 건 당연하지 않을 수 있다. 코너케이스 공부를 더 해야할 것 같다.

nan이란 값은 당연히 numpy에서 만들었다고 생각했는데, 간과한 부분이었다. IEEE754도 공부해놓고 잊어버렸나보다.