高、任意の精度計算機をテストする必要があり、これは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