在我看来,这似乎是Ubuntu 20.04 上awk
( mawk
1.3.4.20200120-2) 的一个错误。我可以用 显示所需的小数位数printf (%.*n*f)
,但小数总是四舍五入为零,就好像其中隐含了“floor”一样:,如您在以下示例中所见。
示例 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
为您正确更新。