Я тестую дві різні реалізації 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
половини круглих слів до першого десяткового місця?