printfSistemimde iki farklı uygulamayı test ediyorum : printf (GNU coreutils) 8.26ve birlikte verilen sürüm zsh 5.3.1. Yarım sayıların nasıl yuvarlandığını test ediyorum, yani 1.5, 2.5, 3.5,… 9.5 için.
$ 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
Burada, her ikisi de açıkça yarıya eşittir . Ancak, ilk ondalık basamağa yuvarlamayı test ettiğimde işler kafa karıştırıyor. Yani, 1.15, 1.25, 1.35,… 1.95 için test yapıyorum.
$ 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
Her iki uygulama da farklı şekilde yapıyor ve ben de net bir örüntü göremiyorum. Bu iki printfyarı yarıya ilk ondalık basamağa nasıl dönüşür?