awk
これは、Ubuntu 20.04 の( 1.3.4.20200120-2)のバグのように思えますmawk
。 を使用して必要な小数点以下の桁数を表示できますがprintf (%.*n*f)
、次の例に示すように、暗黙の「切り捨て」が含まれているかのように、小数点以下の桁は常にゼロに丸められます。
例1:
$ echo "2.3 4.99789" | awk '{printf "%.2f %.2f\n", $1, $2}' 2,00 4,00
例2:
$ cat testf 1.23 3.65 5.76 $awk '{ SUM += $1} END { printf "%.2f\n", SUM }' testf 9,00
答え1
これは の問題ではありませんでしたawk
(ただし、awk
を使用する場合の bash などではなく、で発生しましたbc
)。これは単純なロケールの設定ミスでした。
東ヨーロッパのロケールでは、,
の代わりに を小数点記号として使用します.
。私のロケールは、米国の設定と SK の設定が混在していました。
解決:
チェック:cat /etc/default/locale
またはlocale
コマンドを使用しますLC_NUMERIC
。
例えば:LC_NUMERIC="sk_SK.UTF-8"
修正する:
ローカルで
.bashrc
。またはシステム全体で次のようにします:
sudo update-locale LC_NUMERIC="en_US.UTF-8
正しく更新され
/etc/default/locale
ます。