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() с различными значениями параметра precision при указании параметра 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() - Округляет число произвольной точности в меньшую сторону
Добавить

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

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