web-dev-qa-db-ja.com

BC-自動完全精度乗算

高いです。任意の精度の計算機をテストする必要があります。bcは、比較するのに最適な判断基準のようですが、bcは、各乗算の結果を最大スケールと思われる値に切り捨てます関連するオペランドのそれぞれ。

これをオフにする、または精度を失わないように各乗算のスケールを因子のスケールの合計に自動的に設定する簡単な方法はありますか?

bc以外のものを含む、これに対するよりエレガントなソリューションがある場合は、それを共有していただければ幸いです。

例:

$ bc <<< '1.5 * 1.5'
2.2

本当の答えは2.25です。

10
PSkocik

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スイッチ(@manatworkのおかげ)を使用して、デフォルトの0ではなく、スケールを20に初期化することもできます。次に例を示します。

$ bc -l <<< '1.5 * 1.5'
2.25

$ bc -l <<< '1.52 * 1.52'
2.3104

scaleについての詳細は bc man page で読むことができます。

12
slm

これを試して :

$ bc
scale=10
1.5 * 1.5
2.25

スケール変数についてbcの人を検索

1
DavAlPi

末尾のゼロを表示しないこのbash関数を作成しました

calc () { MAX_PRECISION=20; bc <<< "scale=$MAX_PRECISION; scale = scale($@); $@"; }

例:calc 1.25^3 = 1.953125

0
Vartan