PHP 8.4.7 Released!

bcround

(PHP 8 >= 8.4.0)

bcroundRedondea un número de precisión arbitraria

Descripción

bcround(string $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).

Parámetros

num

El valor a redondear.

precision

El 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
Especifica el método de redondeo. Para más información sobre los métodos, ver RoundingMode.

Valores devueltos

Devuelve una cadena numérica representando num redondeado a la precisión dada.

Errores/Excepciones

Esta función lanza una ValueError en los siguientes casos:

  • num no es una cadena numérica BCMath bien formada.
  • Un mode inválido es especificado.

Ejemplos

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 resultado del ejemplo sería:

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 resultado del ejemplo sería:

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 resultado del ejemplo sería:

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 resultado del ejemplo sería:

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"

Ver también

  • bcceil() - Redondea al alza un número de precisión arbitraria
  • bcfloor() - Redondea hacia abajo un número de precisión arbitraria
  • BcMath\Number::round() - Redondea un número de precisión arbitraria
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top