@ksvdon

Как отсечь нули в числе?

Мне надо проверить одни и те же данные из разных источников. Вывод в каждом выглядит немного по-своему. Например: в одном случае после запятой идут цифры (6 штук) 27.970000 , а в другом случае запись такая 27.97; Как убрать лишние нули (переменную с лишними нулями беру из файла)?

Я намудрил что-то вроде этого
p=27.978440
echo "$p"
p=$(echo "$p" | cut -d . -f 2 )
tmpp=`echo "$p" | grep 0`
while [ -n "$tmpp" ];do
p=${p%$*0}
tmpp=`echo "$p" | grep [0]`
done

получается бесконечный цикл. Мне надо проверить последнюю цифру числа "0 не 0". Че-то не соображу как? Шаблон в голову не лезет. Нужна идея по-лучше чем "grep [0]"
  • Вопрос задан
  • 3366 просмотров
Решения вопроса 1
@vinca
Можно воспользоваться printf (с форматированием), по примеру printf в - который приведет к нужному формату числа:
$ printf '%.2f\n' '27,970000'
27,97
$ printf '%.2f\n' '27,9'
27,90
$ printf '%.2f\n' '27'
27,00

Обратите внимание на запятую - Вам точку нужно заменить на запятую, например через sed или tr.

Конкретно случай для Вас:
$ echo "27,970000" > 1.txt # записываем в файл 1.txt значение 27,970000
$ printf '%.2f\n' $(cat 1.txt) # читаем из файла 1.txt и приводим к формату %.2f
27,97 # результат

Точку заменить на запятую можно вот так:
$ echo "27.970000" > 1.txt
$ printf '%.2f\n' $(cat 1.txt | tr '.' ',')
27,97
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Lerg
@Lerg
Defold, Corona, Lua, GameDev
Преобразование в число и сравнение между числами не работает?

num=$((num+0))

А вообще как только скрипт начинает быть сложным, то перехожу на Python или Lua.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы