Python에서 float 타입의 머신 한계(machine limits) 정보를 확인하려면 NumPy가 제공하는 numpy.finfo() 메서드를 사용하면 됩니다. 이 함수는 지정된 부동 소수점(floating point) 데이터 타입이 표현할 수 있는 값의 범위와 정밀도 관련 정보를 담은 객체를 반환합니다.
finfo()의 첫 번째 매개변수에는 조사하고 싶은 float 데이터 타입(예: np.float16, np.float32, np.float64)을 전달합니다. 반환된 객체의 주요 속성은 다음과 같습니다.
- min : 해당 dtype이 표현할 수 있는 최소값
- max : 해당 dtype이 표현할 수 있는 최대값
- eps : 기계 엡실론(machine epsilon), 즉 1.0과 그 다음으로 표현 가능한 값 사이의 가장 작은 차이
- resolution : 근삿값 계산의 대략적인 분해능(resolution)
실행 절차
먼저 필요한 라이브러리를 임포트합니다.
import numpy as np
float16 타입 확인하기
a = np.finfo(np.float16)
print("float16 타입의 최소값...\n", a.min)
print("float16 타입의 최대값...\n", a.max)float32 타입 확인하기
b = np.finfo(np.float32)
print("\nfloat32 타입의 최소값...\n", b.min)
print("float32 타입의 최대값...\n", b.max)float64 타입 확인하기
c = np.finfo(np.float64)
print("\nfloat64 타입의 최소값...\n", c.min)
print("float64 타입의 최대값...\n", c.max)전체 예제 코드
import numpy as np
# float 타입의 머신 한계 정보를 얻으려면 Python Numpy의 numpy.finfo() 메서드를 사용한다.
# 첫 번째 매개변수는 부동 소수점 타입, 즉 정보를 얻고자 하는 float 데이터 타입이다.
# float16 타입 확인
# min은 해당 dtype의 최소값, max는 해당 dtype의 최대값이다.
a = np.finfo(np.float16)
print("float16 타입의 최소값...\n", a.min)
print("float16 타입의 최대값...\n", a.max)
# float32 타입 확인
b = np.finfo(np.float32)
print("\nfloat32 타입의 최소값...\n", b.min)
print("float32 타입의 최대값...\n", b.max)
# float64 타입 확인
c = np.finfo(np.float64)
print("\nfloat64 타입의 최소값...\n", c.min)
print("float64 타입의 최대값...\n", c.max)출력 결과
float16 타입의 최소값... -65500.0 float16 타입의 최대값... 65500.0 float32 타입의 최소값... -3.4028235e+38 float32 타입의 최대값... 3.4028235e+38 float64 타입의 최소값... -1.7976931348623157e+308 float64 타입의 최대값... 1.7976931348623157e+308
정리
비트 수가 늘어날수록(float16 → float32 → float64) 표현할 수 있는 값의 범위가 크게 확장되고 정밀도도 향상됩니다. 일반적으로 float16은 약 ±65,500까지, float32는 약 ±3.4×1038, float64는 약 ±1.8×10308까지 표현할 수 있습니다. 과학 계산이나 딥러닝처럼 수치 범위와 오버플로우가 중요한 작업에서는 np.finfo()를 활용해 각 dtype의 한계를 미리 파악하는 것이 좋습니다.