Ubuntu 14.04.1 LTS 64-bit
bashでは、bc
の浮動小数点bash変数にスケールを3に設定して乗算することで、浮動小数点変数をクリアしています。ただし、小数点以下の桁数をゼロにして、小数点の左側のゼロを取り除くことができません。 0.005000000
を.005
に変換するにはどうすればよいですか?これは私のファイル命名規則により必要です。あなたの推薦をありがとう。
更新:定義済みのシェル変数に使用して再定義できますか?次のコードでエラーが発生します。
~/Desktop/MEEP$ printf "%.3f\n" $w
bash: printf: 0.005000: invalid number
0,000
ロケールの出力
@vesnog:~$ locale
LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=tr_TR.UTF-8
LC_TIME=tr_TR.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=tr_TR.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=tr_TR.UTF-8
LC_NAME=tr_TR.UTF-8
LC_ADDRESS=tr_TR.UTF-8
LC_TELEPHONE=tr_TR.UTF-8
LC_MEASUREMENT=tr_TR.UTF-8
LC_IDENTIFICATION=tr_TR.UTF-8
LC_ALL=
echo $w
の出力
@vesnog:~$ echo $w
0.005000
簡単な方法は、printf
を使用することです。
$ printf "%.3f\n" 0.005000000000
0.005
先頭の0
を削除するには、sed
を使用して解析します。
$ printf "%.3f\n" 0.005000000000 | sed 's/^0//'
.005
scale
という特別な変数があります。この変数を設定して、精度を制限できます。
[〜#〜]例[〜#〜]
echo "300/7" | bc -l
出力:
42.85714285714285714285
精度を制限するには、
echo "scale=2; 300/7" | bc -l
出力:
42.85
[〜#〜]更新[〜#〜]
echo "scale=3; 300/7" | bc -l | sed 's/[0-9]*\././g'
出力:
.857