BC — 自動完全精度乗算

BC — 自動完全精度乗算

高、任意の精度計算機をテストする必要があり、これはbc比較のための良い標準であるようです。ただし、bc各乗算の結果は、関連するオペランドの最大範囲に切り捨てられます。

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

他にも他のものを含むよりエレガントなソリューションがある場合は、共有していただきbcありがとうございます。

例:

$ bc <<< '1.5 * 1.5'
2.2

実際の答えは2.25です。

答え1

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

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

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

scale以下についてもっと読むことができます。bcマニュアルページ

答え2

この試み:

$ bc
scale=10
1.5 * 1.5
2.25

bc's manでスケール変数を検索する

答え3

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

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

例: calc 1.25^3= 1.953125

関連情報