скажем, у меня есть этот номер здесь 100675
как превратить его в 101000
все решения, которые я нашел в Google, решают десятичные дроби.
скажем, у меня есть этот номер здесь 100675
как превратить его в 101000
все решения, которые я нашел в Google, решают десятичные дроби.
Оболочка bash
может выполнять внутренние вычисления, например, со следующей расшифровкой:
pax:~> for x in 100675 100499 100500 100999 101000; do
...:~> ((y = (x + 500) / 1000 * 1000))
...:~> echo " $x becomes $y"
...:~> done
100675 becomes 101000
100499 becomes 100000
100500 becomes 101000
100999 becomes 101000
101000 becomes 101000
Этот оператор, ((y = (x + 500) / 1000 * 1000))
, сначала прибавляет 500, чтобы превратить усеченное в противном случае целочисленное деление на 1000 в округление деления, а затем повторно умножает его на 1000.
Это немного странная функция, но вот грубая версия, которая может вам понадобиться. По крайней мере, это может быть отправной точкой.
# in:
# $1 - the number to round
# $2 - the 10 power to round at. Defaults to 3 (i.e. 1000)
# output:
# The rounded number
roundPow()
{
local n="$1"
local pow="${2:-3}"
local div="$((10 ** pow))"
echo "$((((n + div / 2) / div) * div))"
}
Это очень грубо по краям, это не проверка параметров и т. д., но должно дать вам базовый уровень.
Надеюсь это поможет.