Page 28 -
P. 28
try:
n = float(input('Enter a number: '))
print(f'n = {n}')
except ValueError as e:
print('Hey! That's not a valid number!')
또한, 부동소수점 계산은 정확하지 않다는 것도 기억해주세요. 이번 예제처럼
단순하게 달리는 시간을 계산하는 경우에는 소수점 하나하나까지 정확할 필요
가 없으므로 문제없지만, 과학 또는 경제 분야에서 계산할 때는 문제가 될 수
있으므로 주의해주세요.
부동소수점 계산이 정확하지 않다는 것이 무슨 의미인지 잘 모르겠다면 파이썬
인터랙티브 셸에 0.1 + 0.2를 입력해보세요. 신기한 결과를 볼 수 있을 것입니
다. 참고로 프로그래밍 언어에 따라서 이 결과에 약간씩 차이가 있습니다. 여러
프로그래밍 언어에서 0.1 + 0.2의 결과가 어떻게 나오는지 정리해서 확인하고
싶다면 http://mng.bz/6QGD를 참고해보기 바랍니다.
계산을 정확하게 하기 위해서는 정수 계산을 하는 것이 좋습니다. 소수점 개수
만큼 곱해서 소수점을 제거하고 정수 계산을 한 뒤, 소수점을 다시 붙여서 출력
하는 코드를 활용하면 정확하게 계산할 수 있습니다.
f-문자열로 소수점 형식 지정하기
파이썬에서 부동소수점을 출력할 때는 f-문자열을 사용하는 것이 좋습니다. 기본적으로 파이
썬은 부동소수점 계산이 정확하지 않아서, 0.1 + 0.7을 하면 0.79999… 등의 값이 나옵니다.
>>> s = 0.1 + 0.7
>>> print(s)
0.7999999999999999
하지만 일반적으로 이런 결과를 원하지는 않을 것입니다. 따라서 f-문자열로 감싸고 소수점 출
력을 제한해서 활용하는 것이 좋습니다.
>>> s = 0.1 + 0.7
>>> print(f'{s:.2f}')
0.80
계속
044
파이썬_06.indd 44 2021-11-18 오전 9:38:18