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

파이썬 fmod() 함수 완벽 정리: 실수 나머지 연산 활용법

파이썬의 fmod() 함수는 수학적 모듈로(나머지) 연산을 수행합니다. 두 피연산자를 나눈 후 얻게 되는 나머지를 모듈로 연산이라고 하며, 이 함수는 표준 라이브러리의 math 모듈에 포함되어 있습니다. fmod()는 특히 부동소수점(float) 값의 나머지를 계산할 때 유용하며, 일반적인 % 연산자와는 동작 방식에 차이가 있습니다. 아래 예제를 통해 다양한 상황에서 모듈로 연산이 어떤 결과를 반환하는지 살펴보겠습니다.

양수 연산

양수끼리의 연산에서는 첫 번째 숫자를 두 번째 숫자로 나눈 나머지가 결과로 반환됩니다. 흥미로운 점은 입력값이 정수라도 결과가 항상 float(실수) 타입으로 반환된다는 것입니다.

예제

from math import fmod
print(fmod(6, 7))
print(type(fmod(6,7)))
print(fmod(0, 7))
print(fmod(83.70, 6.5))

위 코드를 실행하면 다음과 같은 결과가 출력됩니다:

6.0
<type 'float'>
0.0
5.7

음수 연산

음수가 포함된 연산에서는 제수(나누는 수)가 음수인 경우를 제외하고 대부분 음수 부호가 붙은 결과가 반환됩니다. 즉, 첫 번째 인수인 피제수가 음수이면 결과 역시 음수가 됩니다.

예제

print(fmod(29, -7))
print(fmod(-29, 7))
print(fmod(-29, -7))
print(fmod(-30, 8.98))

위 코드를 실행하면 다음과 같은 결과가 출력됩니다:

1.0
-1.0
-1.0
-3.0599999999999987

튜플과 리스트 활용

동일한 로직을 튜플(Tuple)과 리스트(List)에도 적용할 수 있습니다. 각 자료구조의 개별 요소에 인덱스로 접근하여 fmod() 함수를 호출하면 됩니다.

예제

from math import fmod
Tuple = (25, 13, -7, -60 )
List = [-69, 58, -49, 36]
print("\nTuples: ")
print(fmod(Tuple[3], 7))
print(fmod(Tuple[1], -7))
print("Lists: ")
print(fmod(List[3], 6))
print(fmod(List[0], -25))

위 코드를 실행하면 다음과 같은 결과가 출력됩니다:

Tuples:
-4.0
6.0
Lists:
0.0
-19.0

fmod()와 % 연산자의 차이

fmod()는 C 라이브러리의 fmod 함수를 기반으로 하며, 결과의 부호가 피제수(첫 번째 인수)를 따릅니다. 반면 파이썬의 % 연산자는 제수(두 번째 인수)의 부호를 따르기 때문에 음수 연산에서 서로 다른 결과가 나올 수 있습니다. 또한 fmod()는 항상 float 값을 반환하는 반면, % 연산자는 정수 입력 시 정수를 그대로 반환합니다. 따라서 부동소수점 데이터의 정밀한 나머지 계산이 필요하다면 fmod()를 사용하는 것이 좋습니다.