printf
내 시스템에서 두 가지 다른 구현을 테스트 printf (GNU coreutils) 8.26
하고 zsh 5.3.1
있습니다. 및와 번들로 제공되는 버전 . 반 숫자가 반올림되는 방법, 즉 1.5, 2.5, 3.5,… 9.5를 테스트하고 있습니다.
$ for i in {1..9}; do /usr/bin/printf '%.0f\n' "${i}.5"; done
2
2
4
4
6
6
8
8
10
$ for i in {1..9}; do printf '%.0f\n' "${i}.5"; done
2
2
4
4
6
6
8
8
10
여기서 모두 반으로 짝수로 반올림 합니다. 그러나 첫 번째 소수점으로 반올림을 테스트하면 상황이 혼란스러워집니다. 즉, 1.15, 1.25, 1.35,… 1.95 테스트 중입니다.
$ for i in {1..9}; do /usr/bin/printf '%.1f\n' "1.${i}5"; done
1.1
1.2
1.4
1.5
1.5
1.6
1.8
1.9
2.0
$ for i in {1..9}; do printf '%.1f\n' "1.${i}5"; done
1.1
1.2
1.4
1.4
1.6
1.6
1.8
1.9
1.9
두 구현 모두 다르게 수행하며 명확한 패턴을 볼 수 없습니다. 이 두 printf
반올림 은 어떻게 소수점 첫째 자리까지 반 올립니까?