LinuxForum.Fans
Тема

awk десятичный разделитель

Автор: tmp13 3 сообщений 2014 просмотров
#41136

есть число вида:
19,88
пишем:

text
echo 19,88| awk '{$1=$1/100;printf("%f",$1)}'

получаем: 0.190000
если сделать в качестве десятичного разделителя "." то всё норм:

text
echo 19.88| awk '{$1=$1/100;printf("%f",$1)}'
0.198800

далее... почитал я про всё это дело
http://www.gnu.org/manual/gawk/html_node/Conversion.html
пишут:

text
$ gawk 'BEGIN { printf "%g\n", 3.1415927 }'
     -| 3.14159
     $  LC_ALL=en_DK gawk 'BEGIN { printf "%g\n", 3.1415927 }'
     -| 3,14159
     $ echo 4,321 | gawk '{ print $1 + 1 }'
     -| 5
     $ echo 4,321 | LC_ALL=en_DK gawk '{ print $1 + 1 }'
     -| 5,321

чё за LC_ALL? вообщем мне он ваще не помогает

#41220

Так ведь надо мыслить!
Например, ввести

text
echo 88,19| awk '{$1=$1/100;printf("%f",$1)}'

а также вместо LC_ALL, которую вообще не рекомендуется
устанавливать, использовать

text
`echo $LANG|awk -F . '{printf("%s",$1)}' `

Пётр.

#41616
tmp13 написал:
чё за LC_ALL? вообщем мне он ваще не помогает

LC_ALL это локаль.
в разных странах принято писать цифры по разному, в некоторых запятую используют для отделения дробной части, а в некоторых для разделяния тысяч и миллионов. кроме того отличаются кодировки и формат даты и времени.

tmp13 написал:
если сделать в качестве десятичного разделителя "." то всё норм:

ну так и пишите.

Войдите или зарегистрируйтесь, чтобы ответить.