Tôi đang thử nghiệm hai triển khai khác nhau printf
trên hệ thống của mình: printf (GNU coreutils) 8.26
và phiên bản đi kèm zsh 5.3.1
. Tôi đang kiểm tra làm thế nào một nửa số được làm tròn, tức là cho 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
Ở đây, cả hai rõ ràng tròn một nửa đến chẵn . Tuy nhiên, khi tôi kiểm tra làm tròn đến vị trí thập phân đầu tiên, mọi thứ trở nên khó hiểu. Đó là, tôi đang thử nghiệm cho 1.15, 1.25, 1.35, bản 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
Cả hai cách thực hiện đều khác nhau và tôi không thể thấy bất kỳ mô hình rõ ràng nào trong cả hai. Làm thế nào để hai printf
nửa vòng tròn đến vị trí thập phân đầu tiên?