(PHP 8 >= 8.4.0)
bcround — Округляет число произвольной точности
$num, int $precision = 0, RoundingMode $mode = RoundingMode::HalfAwayFromZero): string
   Функция возвращает значение num, которое округлила
   с точностью precision — количество знаков после десятичной точки.
   Параметр precision принимает также отрицательные значения или ноль — значение по умолчанию.
  
numЗначение, которое требуется округлить.
precisionНеобязательное количество десятичных знаков, до которых функция округлит число.
       Функция округлит число num до такого количества
       значащих цифр после десятичной точки, которое указали в параметре
       precision,
       если точность precision положительна.
      
       Функция округлит число num до такого количества
       значащих цифр перед десятичной точкой, которое указали в параметре
       precision,
       если точность precision отрицательна.
       При отрицательном значении точности функция округляет число до следующего
       кратного результата выражения pow(10, -$precision).
       Число num округляется до десятков,
       если точность precision равна -1,
       до сотен, если точность precision равна -2, и т. д.
      
mode
   Функциия возвращает числовую строку, которая представляет число num,
   округлённое с заданной точностью.
  
Функция выбрасывает ошибку ValueError в следующих случаях:
num передали строку,
     которую сформировали неправильно с точки зрения допустимого формата числовых строк в модуле BCMath.
    mode указали недопустимый режим.Пример #1 Пример округления числа произвольной точности функцией bcround()
<?php
var_dump(bcround('3.4'));
var_dump(bcround('3.5'));
var_dump(bcround('3.6'));
var_dump(bcround('3.6', 0));
var_dump(bcround('5.045', 2));
var_dump(bcround('5.055', 2));
var_dump(bcround('345', -2));
var_dump(bcround('345', -3));
var_dump(bcround('678', -2));
var_dump(bcround('678', -3));
?>Результат выполнения приведённого примера:
string(1) "3" string(1) "4" string(1) "4" string(1) "4" string(4) "5.05" string(4) "5.06" string(3) "300" string(1) "0" string(3) "700" string(4) "1000"
Пример #2 
    Пример округления числа произвольной точности функцией bcround()
    с разными значениями точности precision
   
<?php
$number = '123.45';
var_dump(bcround($number, 3));
var_dump(bcround($number, 2));
var_dump(bcround($number, 1));
var_dump(bcround($number, 0));
var_dump(bcround($number, -1));
var_dump(bcround($number, -2));
var_dump(bcround($number, -3));
?>Результат выполнения приведённого примера:
string(7) "123.450" string(6) "123.45" string(5) "123.5" string(3) "123" string(3) "120" string(3) "100" string(1) "0"
Пример #3 
    Пример округления числа произвольной точности функцией bcround()
    с в разных режимах mode
   
<?php
echo 'Округление числа 9.5 в разных режимах', PHP_EOL;
var_dump(bcround('9.5', 0, RoundingMode::HalfAwayFromZero));
var_dump(bcround('9.5', 0, RoundingMode::HalfTowardsZero));
var_dump(bcround('9.5', 0, RoundingMode::HalfEven));
var_dump(bcround('9.5', 0, RoundingMode::HalfOdd));
var_dump(bcround('9.5', 0, RoundingMode::TowardsZero));
var_dump(bcround('9.5', 0, RoundingMode::AwayFromZero));
var_dump(bcround('9.5', 0, RoundingMode::NegativeInfinity));
var_dump(bcround('9.5', 0, RoundingMode::PositiveInfinity));
echo PHP_EOL;
echo 'Округление числа 8.5 в разных режимах', PHP_EOL;
var_dump(bcround('8.5', 0, RoundingMode::HalfAwayFromZero));
var_dump(bcround('8.5', 0, RoundingMode::HalfTowardsZero));
var_dump(bcround('8.5', 0, RoundingMode::HalfEven));
var_dump(bcround('8.5', 0, RoundingMode::HalfOdd));
var_dump(bcround('8.5', 0, RoundingMode::TowardsZero));
var_dump(bcround('8.5', 0, RoundingMode::AwayFromZero));
var_dump(bcround('8.5', 0, RoundingMode::NegativeInfinity));
var_dump(bcround('8.5', 0, RoundingMode::PositiveInfinity));
?>Результат выполнения приведённого примера:
Округление числа 9.5 в разных режимах string(2) "10" string(1) "9" string(2) "10" string(1) "9" string(1) "9" string(2) "10" string(1) "9" string(2) "10" Округление числа 8.5 в разных режимах string(1) "9" string(1) "8" string(1) "8" string(1) "9" string(1) "8" string(1) "9" string(1) "8" string(1) "9"
Пример #4 
    Пример округления числа произвольной точности функцией bcround()
    в разных режимах mode
    до точности precision
   
<?php
echo 'Режим округления RoundingMode::HalfAwayFromZero с точностью до 1 десятичного знака', PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::HalfAwayFromZero));
var_dump(bcround(-1.55, 1, RoundingMode::HalfAwayFromZero));
echo PHP_EOL;
echo 'Режим округления RoundingMode::HalfTowardsZero с точностью до 1 десятичного знака', PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::HalfTowardsZero));
var_dump(bcround(-1.55, 1, RoundingMode::HalfTowardsZero));
echo PHP_EOL;
echo 'Режим округления RoundingMode::HalfEven с точностью до 1 десятичного знака', PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::HalfEven));
var_dump(bcround(-1.55, 1, RoundingMode::HalfEven));
echo PHP_EOL;
echo 'Режим округления RoundingMode::HalfOdd с точностью до 1 десятичного знака', PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::HalfOdd));
var_dump(bcround(-1.55, 1, RoundingMode::HalfOdd));
echo PHP_EOL;
echo 'Режим округления RoundingMode::TowardsZero с точностью до 1 десятичного знака', PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::TowardsZero));
var_dump(bcround(-1.55, 1, RoundingMode::TowardsZero));
echo PHP_EOL;
echo 'Режим округления RoundingMode::AwayFromZero с точностью до 1 десятичного знака', PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::AwayFromZero));
var_dump(bcround(-1.55, 1, RoundingMode::AwayFromZero));
echo PHP_EOL;
echo 'Режим округления RoundingMode::NegativeInfinity с точностью до 1 десятичного знака', PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::NegativeInfinity));
var_dump(bcround(-1.55, 1, RoundingMode::NegativeInfinity));
echo PHP_EOL;
echo 'Режим округления RoundingMode::PositiveInfinity с точностью до 1 десятичного знака', PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::PositiveInfinity));
var_dump(bcround(-1.55, 1, RoundingMode::PositiveInfinity));
?>Результат выполнения приведённого примера:
Режим округления RoundingMode::HalfAwayFromZero с точностью до 1 десятичного знака string(3) "1.6" string(4) "-1.6" Режим округления RoundingMode::HalfTowardsZero с точностью до 1 десятичного знака string(3) "1.5" string(4) "-1.5" Режим округления RoundingMode::HalfEven с точностью до 1 десятичного знака string(3) "1.6" string(4) "-1.6" Режим округления RoundingMode::HalfOdd с точностью до 1 десятичного знака string(3) "1.5" string(4) "-1.5" Режим округления RoundingMode::TowardsZero с точностью до 1 десятичного знака string(3) "1.5" string(4) "-1.5" Режим округления RoundingMode::AwayFromZero с точностью до 1 десятичного знака string(3) "1.6" string(4) "-1.6" Режим округления RoundingMode::NegativeInfinity с точностью до 1 десятичного знака string(3) "1.5" string(4) "-1.6" Режим округления RoundingMode::PositiveInfinity с точностью до 1 десятичного знака string(3) "1.6" string(4) "-1.5"
