bc コマンドを使用してスケーリング値を再調整します。

bc コマンドを使用してスケーリング値を再調整します。

12345の平方根を求め、次のコマンドを使用して小数点以下100桁まで拡張しようとしています。

val=$(bc <<< "scale=100 ; sqrt ( 12345) " )

しかし、問題は、echoコマンドでのみbcを使用して小数点以下10桁に値をサイズ変更したいが機能しないことです。次のコード行を試しましたが、成功しませんでした。

echo "scale=10 ; "$val" " | bc

echo "scale=10 ; $val " | bc

echo "scale=10 ; val " | bc

ここで誰でも私を助け、違いを見つけることができますか?

注:小数点値の最後の桁が答えと異なるため、sqrt()で値を10桁に直接スケーリングしたくないので、高精度を得るにはこれを行う必要があります。

答え1

BC丸めが気にならない場合は、次のようにできます。

$ echo "scale=10 ; "$val/1" " | bc
111.1080555135

値を分割すると(1にも)小数点以下の桁数がに調整されますscale

もちろん、いつでもシェルのprintfを使用できます(やはり少し丸めが発生する可能性があります)。

$ printf '%5.10f\n' "$val"
111.1080555135

なぜ精度が必要ですか?

関連情報