Python/Debugging

ValueError: Precision not allowed in integer format specifier 원인 및 해결 방법

jimmy_AI 2023. 10. 17. 23:09
반응형

파이썬에서 f-string이나 format 함수를 활용한 문자열 포맷팅을 진행할 때,

포맷팅 문법을 잘못 사용하여 간혹

ValueError: Precision not allowed in integer format specifier

오류가 발생하는 경우가 있습니다.

이번 글에서는 해당 에러가 발생되는 원인과 해결 방법을 정리해보도록 하겠습니다.

 

 

에러 발생 예시

아래와 같이 f-string으로 정수 포맷팅을 시도하는 상황을 가정해보도록 하겠습니다.

month = 2
day = 12

today = f'오늘은 {month:.02d}월 {day:.02d}일 입니다.' # ValueError: Precision not allowed in integer format specifier

 

여기서 해당 ValueError가 발생하는데요.

이는 아래와 같은 소수점 포맷팅 양식과 혼동하여 자주 발생하기 쉽습니다.

number = 2.5

print(f'소수점 두 자리까지 출력:{number:.2f}') # 소수점 두 자리까지 출력:2.50

 

 

디버깅 방법

소수점 포맷팅 양식과 유사하게 .2d, .02d처럼 .을 앞에 붙이게 되면
정수 포맷팅에서는 지원되지 않는 양식이기에 오류가 발생하게 되는 것입니다.

따라서, 위의 예제에서 .을 빼고 다음과 같이 올바른 정수 포맷팅 형태로 사용해주시면

해당 오류를 해결할 수 있게 됩니다.

month = 2
day = 12

today = f'오늘은 {month:02d}월 {day:02d}일 입니다.'

print(today) # 오늘은 02월 12일 입니다.