Вокруг разделенного числа в Bash

Как был бы я вокруг результата двух разделенных чисел, например.

3/2

Как тогда, когда я делаю

testOne=$((3/2))

$testOne содержит "1", когда он должен был окружить к "2" как ответ от 3/2=1.5

44
задан sashoalm 24 January 2014 в 11:58
поделиться

2 ответа

Чтобы выполнить округление в арифметике с усечением, просто добавьте (denom-1) к числителю.

Пример округления в меньшую сторону:

N/2
M/5
K/16

Пример округления в большую сторону:

(N+1)/2
(M+4)/5
(K+15)/16

Чтобы выполнить округление до ближайшего, добавьте (denom / 2) в числитель (половинки округляются в большую сторону):

(N+1)/2
(M+2)/5
(K+8)/16
72
ответ дан 26 November 2019 в 21:39
поделиться

bash не даст вам правильный результат 3/2, так как он не делает математику с плавающей точкой. вы можете использовать такие инструменты как awk

$ awk  'BEGIN { rounded = sprintf("%.0f", 3/2); print rounded }'
2

или bc

$ printf "%.0f" $(echo "scale=2;3/2" | bc)
2
26
ответ дан 26 November 2019 в 21:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: