본문 바로가기
프로그래밍언어/파이썬[Error]

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

by about_IT 2025. 5. 27.
728x90

ValueError: math domain error는 수학 함수에 정의역(domain)에 포함되지 않는 값을 전달했을 때 발생하는 오류입니다. 예를 들어 음수에 대해 math.sqrt()를 호출하거나, math.log(0)처럼 로그 함수의 정의되지 않은 구간을 호출하면 이 오류가 발생합니다.

이 오류는 math 모듈의 함수들은 대부분 실수 범위에서 정의된 수학적 제약을 따르기 때문에, 올바르지 않은 값을 인수로 넘길 경우 반드시 예외가 발생합니다. 입력값을 사용할 때는 해당 함수의 수학적 정의역을 반드시 고려해야 합니다.

● 오류 발생 예시

import math
print(math.sqrt(-1))

제곱근 함수는 음수를 입력받을 수 없기 때문에 위 코드는 오류를 발생시킵니다.

ValueError: math domain error

● 대표적인 math domain 오류 사례

  • math.sqrt(x)에서 x < 0
  • math.log(x)에서 x <= 0
  • math.acos(x), math.asin(x)에서 x가 -1~1 범위 초과

● 해결 방법

  • 사용 전 입력값이 허용된 범위인지 검사
  • try-except 문을 사용해 오류에 대비
  • 복소수 계산이 필요한 경우 cmath 모듈 사용

● 예시 - 복소수로 처리

import cmath
print(cmath.sqrt(-1))  # 출력: 1j

복소수 연산을 지원하는 cmath 모듈을 사용하면 음수의 제곱근도 처리할 수 있습니다.

● 결론

ValueError - math domain error는 수학 함수에 허용되지 않는 값을 전달할 때 발생합니다. 이러한 오류를 방지하려면 수학 함수의 정의역을 정확히 이해하고, 입력값에 대한 유효성 검사를 수행하는 것이 필수적입니다.

728x90