awk (mawk) 將小數歸零

awk (mawk) 將小數歸零

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

相關內容