高いです。任意の精度の計算機をテストする必要があります。bc
は、比較するのに最適な判断基準のようですが、bc
は、各乗算の結果を最大スケールと思われる値に切り捨てます関連するオペランドのそれぞれ。
これをオフにする、または精度を失わないように各乗算のスケールを因子のスケールの合計に自動的に設定する簡単な方法はありますか?
bc
以外のものを含む、これに対するよりエレガントなソリューションがある場合は、それを共有していただければ幸いです。
例:
$ bc <<< '1.5 * 1.5'
2.2
本当の答えは2.25です。
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 で読むことができます。
これを試して :
$ bc
scale=10
1.5 * 1.5
2.25
スケール変数についてbcの人を検索
末尾のゼロを表示しないこのbash関数を作成しました
calc () { MAX_PRECISION=20; bc <<< "scale=$MAX_PRECISION; scale = scale($@); $@"; }
例:calc 1.25^3
= 1.953125