मैं 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
पहले दशमलव स्थान पर ये दो राउंड हाफ़ कैसे होते हैं ?