Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python math.modf() 함수로 숫자의 소수 부분과 정수 부분을 튜플로 구하는 방법

Python의 modf() 함수란?

Python의 math 모듈에 포함된 modf() 함수는 주어진 숫자 x의 소수 부분(fractional part)정수 부분(integer part)을 두 항목으로 이루어진 튜플(tuple) 형태로 반환합니다.

이 함수의 특징은 다음과 같습니다.

  • 반환되는 두 값 모두 원래 숫자 x와 같은 부호를 가집니다.
  • 정수 부분도 정수(int)가 아닌 float(실수) 타입으로 반환됩니다.
  • 튜플의 첫 번째 항목은 소수 부분, 두 번째 항목은 정수 부분입니다.

modf() 함수 사용 예제

>>> import math
>>> math.modf(100.73)
(0.730000000000004, 100.0)
>>> math.modf(-5.55)
(-0.5499999999999998, -5.0)

위 예제에서 볼 수 있듯이 양수뿐만 아니라 음수에 대해서도 각 부분의 부호가 원래 숫자와 동일하게 유지됩니다. 즉, -5.55의 경우 소수 부분은 -0.55, 정수 부분은 -5.0으로 반환됩니다.

참고: 부동소수점 오차

결과값에서 0.730000000000004처럼 기대했던 값과 미세하게 다른 숫자가 보일 수 있습니다. 이는 컴퓨터가 실수를 이진법으로 표현하는 과정에서 발생하는 부동소수점(floating-point) 표현 방식의 한계 때문입니다. 필요하다면 round() 함수나 문자열 포매팅을 사용해 원하는 자릿수까지 반올림하여 표시할 수 있습니다.

정수 부분만 활용하고 싶다면?

정수 부분을 int 타입으로 변환하려면 반환된 튜플의 두 번째 값을 int()로 감싸면 됩니다.

>>> import math
>>> frac, integer = math.modf(100.73)
>>> int(integer)
100