回答:
引数でbc
出力するスケールを制御できscale=<#>
ます。
$ echo "scale=10; 5.1234 * 5.5678" | bc
28.52606652
$ echo "scale=5; 5.1234 * 5.5678" | bc
28.52606
あなたの例を使用して:
$ bc <<< 'scale=2; 1.5 * 1.5'
2.25
-l
デフォルトの0ではなく、スケールを20に初期化するスイッチ(@manatworkに感謝)を使用することもできます。次に例を示します。
$ bc -l <<< '1.5 * 1.5'
2.25
$ bc -l <<< '1.52 * 1.52'
2.3104
詳細についてscale
は、bc
manページを参照してください。
min(max(sx,sy,scale),sx+sy)
どこsx
とsy
のスケールですx
とy
の中でx*y
。設定scale=scale(x)+scale(y)
により、必要な最大精度が得られます。スケールを大きい数値(1000など)に設定しても、結果のスケールは増加しません。スケール変数はsにのみ直接影響します。除算の結果scale=1000; a/1
は、前のスケールが何であっても、(ドットの後の)10進1000桁の結果を作成します。