bash
ไม่สามารถจัดการเลขคณิตที่ไม่ใช่จำนวนเต็มได้ มันจะให้ผลลัพธ์ที่ถูกต้องตราบใดที่นิพจน์ทั้งหมดเป็นจำนวนเต็ม ดังนั้นคุณต้องหลีกเลี่ยงการรับค่าที่ไม่ใช่จำนวนเต็มในการคำนวณของคุณ
ในกรณีของคุณเมื่อคุณมีการประเมิน1 / 5
, 2 / 5
ฯลฯ มันจะสร้างจำนวนเต็มค่าศูนย์ใน correspondings ทุบตีบางค่าที่ไม่ใช่จำนวนเต็มและผลที่จะออกมาเป็นศูนย์ตาม ความสำคัญของการหารและการคูณเป็นตัวดำเนินการที่เหมือนกันและเหมือนกันเสมอจะถูกดำเนินการจากซ้ายไปขวาตามที่วางไว้ในนิพจน์
หนึ่งรอบ ๆ จะทำการคูณก่อนแล้วหารดังนั้นทุบตีไม่ต้องจัดการค่าที่ไม่ใช่จำนวนเต็ม การแสดงออกที่ถูกต้องจะเป็น
$ 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