式を評価し、小数点を3桁に丸めます。

式を評価し、小数点を3桁に丸めます。

"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)'

関連情報