Saya menguji dua implementasi berbeda printf
pada sistem saya:, printf (GNU coreutils) 8.26
dan versi yang dibundel dengan zsh 5.3.1
. Saya menguji bagaimana angka setengah dibulatkan, yaitu untuk 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
Di sini, keduanya jelas setengah bulat sampai genap . Namun, ketika saya menguji pembulatan ke tempat desimal pertama, semuanya menjadi membingungkan. Yaitu, saya menguji 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
Kedua implementasi melakukannya secara berbeda, dan saya juga tidak dapat melihat pola yang jelas. Bagaimana kedua printf
putaran ini membagi dua ke tempat desimal pertama?