정확한 이해를 위하여...
.Nf
의 의미.nf
를 통해 -> 원하는 숫자
- 사실 소수점 처리에 관한 내용을 적긴했다.
- 자세한 설명은 다음을 참고하길 바란다.
참고자료: 토닥토닥 파이썬-파이썬 기초
개념을 완벽하게 이해했다 생각했는데,
파이썬 코드를 실습할 때 직접 짜보면..
:.2f
을 넣었을 때TypeError: unsupported format string passed to tuple._format_
- 에러문 해석: 튜플에 포맷 문자열이 지원하지 않는다.
에러문을 보았을 때, 구글링을 하면서 왜 그런지 알고 싶었으나 알지 못하고 그냥
code # 12 : {conf_interval:.2f}
-> {conf_interval}
(:.2f
삭제)
이렇게 디버깅을 하였다.
⭐원래 실습 코드에는 없는데 내가 넣은 코드 때문에 에러가 난 것!!
:.2f
삭제 후🤔 아니 실습코드는 돌아가는데 왜 나만 안되냐구⁉️
:.nf
같은 코드를 표현할 때는 반드시 f-string, format( ) 또는 % 포맷 연산자와 함께 사용해야함.
z_stat = 1.2345
formatted = f"{z_stat:.2f}" # 올바름
print(formatted) # 출력: 1.23
z_stat = 1.2345
formatted = "{:.2f}".format(z_stat) # 올바름
print(formatted) # 출력: 1.23
z_stat = 1.2345
formatted = "%.2f" % z_stat # 올바름
print(formatted) # 출력: 1.23
포맷팅하려는 값이 숫자 타입인지 확인. 만약 문자열이나 다른 타입이라면 오류가 발생하거나 포맷팅이 적용되지 않음.
z_stat = "1.2345" # 문자열
formatted = f"{z_stat:.2f}" # 오류 발생 (ValueError)
z_stat = 1.2345 # 숫자
formatted = f"{z_stat:.2f}" # 정상 작동
포맷팅된 값을 변수에 저장하거나 바로 출력하지 않으면 결과를 확인할 수 없음
z_stat = 1.2345
f"{z_stat:.2f}" # 값을 저장하거나 출력하지 않음 -> 결과 확인 불가
z_stat = 1.2345
formatted = f"{z_stat:.2f}"
print(formatted) # 출력: 1.23
어떤 환경에서는 포맷팅이 제대로 출력되지 않을 수도 있습니다.
repr()
로 설정되어 있으면 포맷팅 결과가 다르게 나타날 수 있음디버깅 풀이 요약을 해보자면...
1. 포맷팅 방식(f-string, format(), %)이 올바르게 사용?
2. 포맷팅 대상이 숫자 타입?
3. 포맷팅된 결과를 출력/저장?
4. Python 버전이 3.6 이상?
위 순서를 확인한다면 소수점 포맷팅을 할 수 있다.