24

を使用して浮動小数点数を切り捨てる方法bc

たとえば、もしそうなら

echo '4.2-1.3' | bc

2.9これは、切り捨て/フロアを使用して取得する方法を出力します2

4

4 に答える 4

26

/演算子を使用します。

echo '(4.2-1.3) / 1' | bc
于 2013-12-13T03:46:42.307 に答える
1

除算の小数点以下の桁数を管理する変数は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
于 2020-04-27T21:45:55.580 に答える