bcround

(PHP 8 >= 8.4.0)

bcroundОкругляет число произвольной точности

Описание

bcround(string $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.
  • Значение аргумента scale выходит за пределы допустимого диапазона.

Примеры

Пример #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"

Смотрите также

  • bcceil() - Округляет число произвольной точности в большую сторону
  • bcfloor() - Округляет число произвольной точности в меньшую сторону
  • BcMath\Number::round() - Округляет число произвольной точности
Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top