ฉันกำลังทดสอบสองการใช้งานที่แตกต่างกันprintf
ในระบบของฉัน: และรุ่นที่มาพร้อมกับprintf (GNU coreutils) 8.26
zsh 5.3.1
ฉันกำลังทดสอบวิธีการปัดเศษตัวเลขครึ่งหนึ่งเช่น 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
ที่นี่ทั้งสองอย่างชัดเจนครึ่งรอบจะได้ อย่างไรก็ตามเมื่อฉันทดสอบการปัดเศษทศนิยมแรกสิ่งต่าง ๆ จะสับสน นั่นคือฉันกำลังทดสอบ 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
การใช้งานทั้งสองทำได้แตกต่างกันและฉันไม่เห็นรูปแบบที่ชัดเจนในทั้งสอง printf
รอบสองเหล่านี้แบ่งเท่า ๆ กันเป็นทศนิยมแรกอย่างไร