
シェルスクリプトを使用して浮動小数点数(たとえば、小数点以下の最大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
。