Awk(mawk)将十进制数下移至零

Awk(mawk)将十进制数下移至零

在我看来,这似乎是Ubuntu 20.04 上awk( mawk1.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为您正确更新。

相关内容