Estoy probando dos implementaciones diferentes de printf
en mi sistema: printf (GNU coreutils) 8.26
y la versión incluida zsh 5.3.1
. Estoy probando cómo se redondean los medios números, es decir, para 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
Aquí, ambos claramente redondean a la mitad . Sin embargo, cuando pruebo el redondeo al primer decimal, las cosas se vuelven confusas. Es decir, estoy probando 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
Ambas implementaciones lo hacen de manera diferente, y tampoco puedo ver ningún patrón claro. ¿Cómo printf
redondean estas dos mitades al primer decimal?