프로그래밍언어/파이썬[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