Округлення чисел

Bash:
Округлення чисел

Як:

Ось короткий огляд округлення в Bash:

# Округлення вниз за допомогою 'floor' з bc
echo "scale=0; 3.49/1" | bc

# Округлення вгору за допомогою 'ceiling' з bc
echo "scale=0; 3.01/1" | bc -l

# Округлення до найближчого цілого за допомогою printf
printf "%.0f\n" 3.49

# Хитрість для округлення до найближчого цілого за допомогою bc
echo "(3.49+0.5)/1" | bc

Приклади виводу — прямо з терміналу:

3  # Округлено вниз (floor)
4  # Округлено вгору (ceiling)
3  # Округлено до найближчого (за допомогою printf)
3  # Округлено до найближчого (за допомогою bc)

Поглиблений розгляд

Колись, коли в Bash скриптах не було bc або printf для чарівництва з математикою, “старожили” мусили покладатися на зовнішні інструменти або винахідливі обхідні шляхи. Тепер, bc дозволяє робити точні математичні обчислення. Зверніть увагу, bc за замовчуванням не округлює, а проводить відкидання до меншого. Частина зі scale встановлює дію десяткової точки.

Альтернативи? Ви могли б використовувати awk для округлення без переходу на bc або матися з perl для більш складних математичних потреб. Для мазохістів, можна спробувати чистий Bash з, скажімо, ітеративною маніпуляцією рядків – але навіщо?

Щодо деталей, bc не просто округлює, він робить купу математичних речей — масштабує, синусоїдить, коренює, назвіть будь-що. З printf, більше йдеться про форматування тексту, але гей, воно округлює числа, тож ми не скаржимося.

Див. також

Для тих, хто хоче дізнатися більше: