計算された値を切り捨てようとしましたが、bc
設定するとscale=0
計算全体がゼロを返します。この設定はscale=1
正しい値である357.3を返しますが、scale=0
常に0を返します。
以下は計算例です。
echo "scale=0; 3573 * (10 / 100)/1" | bc -l
0
echo "scale=1; 3573 * (10 / 100)/1" | bc -l
357.3
浮動小数点数を整数に切り捨てる正しい方法ではありませんかbc
? bashスクリプトに整数として使用したいです。ありがとうございます!
答え1
作業順序を使用する追加出力:
echo "scale=0; 3573 * 10 / 100" | bc -l # 357
echo "scale=0; 3573 / 100 * 10" | bc -l # 350
答え2
使いawk
やすくなると思います。
awk 'BEGIN { print int(3573 * (10/100)/1) }'
357
答え3
@Paul_Pedantの考えが正しいです。:scale
計算のすべての部分に適用されます。 10 / 100 = 0(サイズは0):
$ bc <<< 'scale = 0; 10 / 100'
0
したがって、全体の計算結果はゼロです。
答え4
使用printf
:
$ LC_ALL=C printf "%.0f\n" $(echo "3573 * (10 / 100)/1" | bc -l)
357