Awk (mawk) reduz os números decimais para zero

Awk (mawk) reduz os números decimais para zero

Parece-me um bug em awk( mawk1.3.4.20200120-2) no Ubuntu 20.04. Posso exibir o número necessário de decimais com printf (%.*n*f), mas os decimais são sempre arredondados para zero, como se houvesse "piso" implícito envolvido:, como você pode ver nos exemplos a seguir.

  • Exemplo 1:

    $ echo "2.3 4.99789" | awk '{printf "%.2f %.2f\n", $1, $2}'
    2,00 4,00
    
  • Exemplo 2:

    $ cat testf
    1.23
    3.65
    5.76
    
    $awk '{ SUM += $1} END { printf "%.2f\n",  SUM }' testf
    9,00
    

Responder1

Isso não foi um problema awk(embora tenha se manifestado em awk, não, por exemplo, em bash ao usar bc). Foi um simples erro de configuração/configuração de localidade.

A localidade do Leste Europeu é usada ,como separador decimal em vez de .. Minha localidade era uma mistura de configurações dos EUA e configurações do SK.

Solução:

Verifique: cat /etc/default/localeou com localecomando para LC_NUMERIC.

Por exemplo:LC_NUMERIC="sk_SK.UTF-8"

Modificar:

  • seja localmente em .bashrc.

  • ou em todo o sistema com:

    sudo update-locale LC_NUMERIC="en_US.UTF-8
    

    que será atualizado corretamente /etc/default/localepara você.

informação relacionada