(PHP 8 >= 8.4.0)
bcround — Redondea un número de precisión arbitraria
$num, int $precision = 0, RoundingMode $mode = RoundingMode::HalfAwayFromZero): string
Devuelve el valor redondeado de num a
la precisión especificada precision
(número de dígitos después del punto decimal).
precision puede ser también negativo o nulo (por omisión).
numEl valor a redondear.
precisionEl número opcional de decimales a redondear.
Si el argumento precision es positivo,
num será redondeado utilizando el argumento
precision para definir el número significativo
de dígitos después del punto decimal.
Si el argumento precision es negativo,
num será redondeado utilizando el argumento
precision para definir el número significativo
de dígitos antes del punto decimal, i.e. el múltiplo más cercano
de pow(10, -$precision), i.e. para una
precision de -1, num
será redondeado a 10, para una precision de -2 a 100, etc.
mode
Devuelve una cadena numérica representando num redondeado a la precisión dada.
Esta función lanza una ValueError en los siguientes casos:
num no es una cadena numérica BCMath bien formada.mode inválido es especificado.Ejemplo #1 Ejemplos de 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));
?>El ejemplo anterior mostrará:
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"
Ejemplo #2
Ejemplo de la utilización de bcround() con diferentes valores de 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));
?>El ejemplo anterior mostrará:
string(7) "123.450" string(6) "123.45" string(5) "123.5" string(3) "123" string(3) "120" string(3) "100" string(1) "0"
Ejemplo #3
Ejemplo de la utilización de bcround() con diferentes valores de mode
<?php
echo 'Modos de redondeo con 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 'Modos de redondeo con 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));
?>El ejemplo anterior mostrará:
Modos de redondeo con 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" Modos de redondeo con 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"
Ejemplo #4
Ejemplo de la utilización de bcround() con diferentes valores de mode
al especificar precision
<?php
echo 'Utilización de RoundingMode::HalfAwayFromZero con una precisión decimal de 1' . PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::HalfAwayFromZero));
var_dump(bcround(-1.55, 1, RoundingMode::HalfAwayFromZero));
echo PHP_EOL;
echo 'Utilización de RoundingMode::HalfTowardsZero con una precisión decimal de 1' . PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::HalfTowardsZero));
var_dump(bcround(-1.55, 1, RoundingMode::HalfTowardsZero));
echo PHP_EOL;
echo 'Utilización de RoundingMode::HalfEven con una precisión decimal de 1' . PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::HalfEven));
var_dump(bcround(-1.55, 1, RoundingMode::HalfEven));
echo PHP_EOL;
echo 'Utilización de RoundingMode::HalfOdd con una precisión decimal de 1' . PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::HalfOdd));
var_dump(bcround(-1.55, 1, RoundingMode::HalfOdd));
echo PHP_EOL;
echo 'Utilización de RoundingMode::TowardsZero con una precisión decimal de 1' . PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::TowardsZero));
var_dump(bcround(-1.55, 1, RoundingMode::TowardsZero));
echo PHP_EOL;
echo 'Utilización de RoundingMode::AwayFromZero con una precisión decimal de 1' . PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::AwayFromZero));
var_dump(bcround(-1.55, 1, RoundingMode::AwayFromZero));
echo PHP_EOL;
echo 'Utilización de RoundingMode::NegativeInfinity con una precisión decimal de 1' . PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::NegativeInfinity));
var_dump(bcround(-1.55, 1, RoundingMode::NegativeInfinity));
echo PHP_EOL;
echo 'Utilización de RoundingMode::PositiveInfinity con una precisión decimal de 1' . PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::PositiveInfinity));
var_dump(bcround(-1.55, 1, RoundingMode::PositiveInfinity));
?>El ejemplo anterior mostrará:
Utilización de RoundingMode::HalfAwayFromZero con una precisión decimal de 1 string(3) "1.6" string(4) "-1.6" Utilización de RoundingMode::HalfTowardsZero con una precisión decimal de 1 string(3) "1.5" string(4) "-1.5" Utilización de RoundingMode::HalfEven con una precisión decimal de 1 string(3) "1.6" string(4) "-1.6" Utilización de RoundingMode::HalfOdd con una precisión decimal de 1 string(3) "1.5" string(4) "-1.5" Utilización de RoundingMode::TowardsZero con una precisión decimal de 1 string(3) "1.5" string(4) "-1.5" Utilización de RoundingMode::AwayFromZero con una precisión decimal de 1 string(3) "1.6" string(4) "-1.6" Utilización de RoundingMode::NegativeInfinity con una precisión decimal de 1 string(3) "1.5" string(4) "-1.6" Utilización de RoundingMode::PositiveInfinity con una precisión decimal de 1 string(3) "1.6" string(4) "-1.5"