Bash は浮動小数点変数の精度を制限します。

Bash は浮動小数点変数の精度を制限します。

Ubuntu bashでは、小数点以下の桁数を014.04.1 LTS 64-bitに設定し、小数点の左側の0を削除することはできません。にどのようにbc切り替えることができますか?これは私のファイル命名規則のために必要です。ご提案いただきありがとうございます。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

ベストアンサー1

簡単な方法は以下を使用することですprintf

$ printf "%.3f\n" 0.005000000000
0.005

先行を削除するには、0次のように解析しますsed

$ printf "%.3f\n" 0.005000000000 | sed 's/^0//'
.005

おすすめ記事