Bash

評估表達式並四捨五入到小數點後三位

  • February 28, 2017

我有一個表達式"5+50*3/20 + (19*2)/7",我需要將其四捨五入到小數點後 3 位。答案是17.92857142857143。當我使用下面的腳本時,它給了我17.928. 答案應該是17.929

read exp
echo "scale=3; $exp" |bc -l

還有一個問題是如何使用printf來完成相同的任務

寫這個:

read exp
printf %.3f $(echo "$exp" | bc -l)

您可以通過使用 “here string” end 刪除兩個echos 來簡化評論中的表達式:

printf "%.3f\n" "$(bc -l <<< "$var")"

甚至

printf "%.3f\n" "$(bc -l <<< "5+50*3/20 + (19*2)/7")"

引用自:https://unix.stackexchange.com/questions/172116