Bash
評估表達式並四捨五入到小數點後三位
我有一個表達式
"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 刪除兩個
echo
s 來簡化評論中的表達式:printf "%.3f\n" "$(bc -l <<< "$var")"
甚至
printf "%.3f\n" "$(bc -l <<< "5+50*3/20 + (19*2)/7")"