bash
गैर-पूर्णांक अंकगणित को संभाल नहीं सकते। यह आपको सही परिणाम देगा जब तक कि सभी भाव पूर्णांक नहीं होते। इसलिए आपको अपनी गणना में एक गैर-पूर्णांक मान प्राप्त करने से बचने की आवश्यकता है।
आपके मामले में, जब आप मूल्यांकन कर रहे होते हैं 1 / 5
, 2 / 5
आदि , तो यह कुछ गैर-पूर्णांक मानों के आधार पर पूर्णांक शून्य मान बनाता है और परिणाम तदनुसार शून्य हो रहे हैं। पूर्वता विभाजन और गुणा के समान है और एक ही मिसाल ऑपरेटरों हमेशा बाएं से दाएं क्रियान्वित कर रहे हैं के रूप में वे अभिव्यक्ति में रखा जाता है कर रहे हैं।
चारों ओर एक काम पहले गुणा करना होगा और फिर विभाजन को कभी भी गैर-पूर्णांक मान को संभालना नहीं होगा। सही अभिव्यक्ति होगी,
$ max=5; for e in $(seq 1 1 $max); do percent=$(( $e*100/$max )); echo "echo $e / $max : = $percent"; done
echo 1 / 5 : = 20
echo 2 / 5 : = 40
echo 3 / 5 : = 60
echo 4 / 5 : = 80
echo 5 / 5 : = 100