![bash에서 예상한 대로 printf가 숫자를 반올림하지 않는 이유는 무엇입니까? [복사]](https://linux55.com/image/225628/bash%EC%97%90%EC%84%9C%20%EC%98%88%EC%83%81%ED%95%9C%20%EB%8C%80%EB%A1%9C%20printf%EA%B0%80%20%EC%88%AB%EC%9E%90%EB%A5%BC%20%EB%B0%98%EC%98%AC%EB%A6%BC%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
prompt> printf "%.2f\n" 3.314
3.31
prompt> printf "%.2f\n" 3.315
3.32
좋아요, 제가 원하는 걸 얻었어요. 그러나 다른 숫자를 사용하면 다음과 같은 결과가 나타납니다.
prompt> printf "%.2f\n" 28.124
28.12
prompt> printf "%.2f\n" 28.125
28.12
두 번째 경우에는 왜 올바르게 반올림되지 않습니까? 그렇게 되어야 28.13
하지 않습니까?
답변1
printf
은행가 반올림 사용(짝수는 내림, 홀수는 내림):
printf '%.2f\n' 28.125 # 28.12
printf '%.2f\n' 28.135 # 28.14
printf '%.2f\n' 28.145 # 28.14
printf '%.2f\n' 28.155 # 28.16
자세한 내용은 다음을 참조하세요.부동 소수점 가이드