"5+50*3/20 + (19*2)/7"
小数点3桁まで丸めなければならないという表現があります。この質問に対する答えはです17.92857142857143
。以下のスクリプトを使用すると、17.928
答えはです17.929
。
read exp
echo "scale=3; $exp" |bc -l
printf
もう1つの質問は、以下を使用して同じことを行う方法です。
答え1
ただ書く:
read exp
printf %.3f $(echo "$exp" | bc -l)
答え2
"here string" endを使用して2つを削除して、コメントの式を単純化することができますecho
。
printf "%.3f\n" "$(bc -l <<< "$var")"
でも
printf "%.3f\n" "$(bc -l <<< "5+50*3/20 + (19*2)/7")"
答え3
Pythonはあなたが好きな動作をしているようです:
$ echo 'print(round(' "5+50*3/20 + (19*2)/7" ', 3))' | python3
17.929
答え4
$exp変数がシェルスクリプトから17.92857142857143の値を取得すると仮定し、次の行を使用して丸めて印刷します。
python2 -c 'print round('$exp',3)'