[Python] 정수와 소수 부분으로 분리하는 modf
modf
math.modf() 함수는 입력값을 정수와 소수 부분으로 분리해 반환한다.
from math import modf
a = 3.5
b = 3.0
c = 3.14
print(modf(a)) # (0.5, 3.0)
print(modf(b)) # (0.0, 3.0)
print(modf(c)) # (0.14000000000000012, 3.0)
print(modf(a)[0] == 0) # False
print(modf(b)[0] == 0) # True
근데 위 예제에서 c
에 modf()
를 적용한 경우, 소수가 0.14가 아니라 유달리 길다.
이는 부동소수점 문제이다.
부동소수점은 10진법 수를 2진법 체계에서 정확히 반영하지 못해 생기는 문제이다.
modf()함수는 부동소수점의 값을 그대로 반환한다.
참고
💛 개인 공부 기록용 블로그입니다. 👻