在我看來,這就像是Ubuntu 20.04 上awk
( 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
這將為您正確更新。