Estou testando duas implementações diferentes printf
no meu sistema: printf (GNU coreutils) 8.26
e a versão que acompanha o pacote zsh 5.3.1
. Estou testando como os números médios são arredondados, ou seja, 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
Aqui, ambos claramente arredondam metade para o par . No entanto, quando testo o arredondamento para a primeira casa decimal, as coisas ficam confusas. Ou seja, estou testando para 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 as implementações fazem isso de maneira diferente e também não vejo nenhum padrão claro. Como esses dois printf
s arredondam pela metade a primeira casa decimal?