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
なぜ精度が必要ですか?