프로그래밍언어/파이썬[Error]
[파이썬][Error] 090. OverflowError - result too large: 10 ** 1000
about_IT
2025. 5. 31. 05:33
728x90
OverflowError: result too large
오류는 수학 연산 결과가 파이썬 내부에서 처리할 수 있는 수치 범위를 초과할 때 발생합니다. 예를 들어 10 ** 1000
처럼 매우 큰 수를 계산할 경우, 정수는 처리 가능하지만 부동소수점 연산(float)에서는 이 오류가 발생할 수 있습니다.
파이썬의 정수형은 가변 길이이므로 큰 정수 연산 자체는 오류를 발생시키지 않지만, 특정 내장 함수 또는 C 기반 라이브러리에서의 제한된 자료형(float, double 등)에서는 OverflowError가 발생할 수 있습니다.
● 오류 발생 예시
import math
math.exp(1000)
math.exp(1000)
은 부동소수점 오버플로우가 발생하므로 OverflowError
를 일으킵니다.
OverflowError: math range error
● 해결 방법
- 정수 연산은 파이썬 내장 정수형 사용 (제한 없음)
- 부동소수점 대신
decimal
또는fractions
모듈 활용 - 지수 연산이 필요한 경우 로그 스케일로 변경
● 예시 코드 (Decimal 사용)
from decimal import Decimal, getcontext
getcontext().prec = 200
d = Decimal(10) ** 1000
print(d)
● 자주 하는 실수
math.exp
,math.pow
등 부동소수점 함수에 과도한 값 전달- 넘치는 float 값을 정수로 잘못 이해
- 로그/지수 함수 사용 시 값의 범위 미리 예측하지 않음
● 결론
OverflowError - result too large
는 부동소수점 연산에서 표현 가능한 범위를 초과할 때 발생합니다. 정확하고 안전한 연산을 위해 적절한 수치 자료형과 수학적 기법을 사용하는 것이 필요합니다.
728x90