Je teste deux implémentations différentes de printf
sur mon système printf (GNU coreutils) 8.26
:, et la version fournie avec zsh 5.3.1
. Je teste comment les demi-nombres sont arrondis, c'est-à-dire pour 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
Ici, les deux arrondissent clairement la moitié pour égaliser . Cependant, lorsque je teste l'arrondi à la première décimale, les choses deviennent confuses. Autrement dit, je teste 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
Les deux implémentations le font différemment, et je ne vois aucun modèle clair dans les deux. Comment ces deux printf
moitiés rondes s à la première décimale?