문제상황
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도 공부해놓고 잊어버렸나보다.