Parece-me um bug em awk
( mawk
1.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/locale
ou com locale
comando 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/locale
para você.