
次のコードで他の結果が表示されるのはなぜですか?
read a
printf "%.3f\n" $(bc -l <<< "$a")
結果:17.929 そして
read a
echo "scale=3; $a" | bc -l
結果:17.928
私の入力表現は5+50*3/20 + (19*2)/7。
彼らは同じことをしているように見えますが、最終結果は異なります。なぜ?
変更(使用エコ)上記の2番目のスニペットでも、最初のスニペットと同じ結果が得られますか?
答え1
echo
との違いではなく、printf
との数値処理の違いです。printf
bc
計算された数字を出力するprintf
のではなく、最後の数字を丸めると思います。bc
どちらの方法でも、より多くの数字を出力することでこれを確認できます。