を使用して浮動小数点数を切り捨てる方法bc
たとえば、もしそうなら
echo '4.2-1.3' | bc
2.9
これは、切り捨て/フロアを使用して取得する方法を出力します2
/
演算子を使用します。
echo '(4.2-1.3) / 1' | bc
除算の小数点以下の桁数を管理する変数はscaleです。
したがって、scale が0
(デフォルト) の場合、1 で割ると0
小数に切り捨てられます。
$ echo '(4.2-1.3) / 1 ' | bc
2
その他の演算では、各オペランドの位取り(小数点以下の桁数)から小数点以下の桁数を計算します。たとえば、加算、減算、および乗算では、結果のスケールは両方の最大になります。
$ echo ' 4.2 - 1.33333333 ' | bc
2.86666667
$ echo ' 4.2 - 1.333333333333333333 ' | bc
2.866666666666666667
$ echo ' 4.2000 * 1.33 ' | bc
5.5860
代わりに、除算では、小数点以下の桁数は変数の値と厳密に等しくなりますscale
:
$ echo 'scale=0;4/3;scale=3;4/3;scale=10;4/3' | bc
1
1.333
1.3333333333
scale の値を復元する必要があるため、関数を定義することをお勧めします (GNU 構文)。
$ echo ' define int(x){ os=scale;scale=0;x=x/1;scale=os;return(x) }
int( 4.2-1.3 )' | bc
2
または古い POSIX 言語では:
$ echo ' define i(x){
o=scale;scale=0;x=x/1;scale=o;return(x)
}
i( 4.2-1.3 )' | bc
2