Мне кажется, это ошибка в awk
( mawk
1.3.4.20200120-2) в Ubuntu 20.04. Я могу отобразить необходимое количество десятичных знаков с помощью 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
). Это была простая ошибка конфигурации/настройки локали.
Восточноевропейская локаль использует ,
в качестве десятичного разделителя вместо .
. Моя локаль представляла собой смесь настроек США и настроек Словакии.
Решение:
Проверьте: 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
для вас.