正しい丸めを使用したおおよその浮動小数点数

正しい丸めを使用したおおよその浮動小数点数

シェルスクリプトを使用して浮動小数点数(たとえば、小数点以下の最大4桁)のおおよその値を計算するにはどうすればよいですか。 2つの例があります。

A=1.2345678そしてB=1.2345678E-05

A=1.2346だから私はandを取得したいと思いますB=1.2346E-05

A以下を使用してタスクをすばやく完了できますcut

A=`echo $A | cut -c1-6`

ただし、これを行うと、A=1.2345最後の数字が丸められると予想されます6(次の数字が5より大きいため)。そして、小数点の前の1桁でのみ動作します。 (おおよその計算をしたい場合はどうすればいいですか?) 同様100.2345678です。B

ベストアンサー1

使用printf:

$ printf "%.4f\n" "$A"
1.2346
$ printf "%.4f\n" "$B"
0.0000
$ printf "%.4e\n" "$B"
1.2346e-05
$ printf "%.14f\n" "$B"
0.00001234567800
$ printf "%.4g\n" "$B"
1.235e-05
$ printf "%.4g\n" "$A"
1.235

インデックスが変更される可能性があるため、%e同じままにするには文字列演算インデックスから数字を分離して別々に印刷する機能:

$ B=100.12345678E-05  
$ printf '%.5fE%s\n' "${B%E*}" "${B##*E}"
100.12346E-05

${B%E*}最初の項目の前のすべての項目E${B##*E}最初の項目の後のすべての項目を印刷しますE

おすすめ記事