프로그래밍언어/파이썬[Error]

[파이썬][Error] 110. ValueError - math domain error

about_IT 2025. 6. 1. 00:56
728x90

ValueError: math domain error는 수학 함수에 정의되지 않은 입력값을 제공했을 때 발생하는 오류입니다. 예를 들어 math.sqrt(), math.log(), math.acos() 등의 함수는 특정 입력 범위에만 유효하므로 잘못된 값을 넣으면 이 오류가 발생합니다.

이 오류는 특히 음수 루트 계산, 0 이하의 로그 계산 등에서 자주 발생하며, 수학적으로 정의되지 않은 연산을 시도했음을 의미합니다.

● 오류 발생 예시

import math

x = -1
print(math.sqrt(x))  # 오류 발생

math.sqrt() 함수는 0 이상의 실수만 허용하므로 위 예제에서는 ValueError가 발생합니다.

● 주요 원인

  • math.sqrt()에 음수 입력
  • math.log()에 0 이하 입력
  • math.acos()에 -1 ~ 1 범위 외의 값 입력

● 해결 방법

  • 입력값이 유효한 수학 도메인 범위 내에 있는지 사전 확인
  • 필요 시 try-except로 예외 처리
  • 복소수 계산이 필요한 경우 cmath 모듈 사용 고려

● 예시 코드 (정상 처리)

import math

x = -1
if x >= 0:
    print(math.sqrt(x))
else:
    print("음수에는 sqrt 불가")

● 결론

수학 함수는 정의된 입력 범위를 벗어나는 경우 math domain error를 발생시킵니다. 따라서 입력값에 대한 유효성 검사를 철저히 하고, 예외 처리를 통해 프로그램이 중단되지 않도록 하는 것이 중요합니다.

728x90