(PHP 8 >= 8.4.0)
BcMath\Number::round — Redondea un número de precisión arbitraria
$precision = 0, RoundingMode $mode = RoundingMode::HalfAwayFromZero): BcMath\Number
Devuelve el valor redondeado de $this
a la precisión especificada
(el número de dígitos después del punto decimal).
precisión puede ser también negativo o nulo (por omisión).
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.
modeDevuelve el resultado en forma de un nuevo objeto BcMath\Number.
Este método lanza una ValueError si se especifica un mode inválido.
Ejemplo #1 Ejemplo de BcMath\Number::round()
<?php
var_dump(
new BcMath\Number('3.4')->round(),
new BcMath\Number('3.5')->round(),
new BcMath\Number('3.6')->round(),
new BcMath\Number('3.6')->round(0),
new BcMath\Number('5.045')->round(2),
new BcMath\Number('5.055')->round(2),
new BcMath\Number('345')->round(-2),
new BcMath\Number('345')->round(-3),
new BcMath\Number('678')->round(-2),
new BcMath\Number('678')->round(-3),
);
?>El ejemplo anterior mostrará:
object(BcMath\Number)#2 (2) {
["value"]=>
string(1) "3"
["scale"]=>
int(0)
}
object(BcMath\Number)#3 (2) {
["value"]=>
string(1) "4"
["scale"]=>
int(0)
}
object(BcMath\Number)#4 (2) {
["value"]=>
string(1) "4"
["scale"]=>
int(0)
}
object(BcMath\Number)#5 (2) {
["value"]=>
string(1) "4"
["scale"]=>
int(0)
}
object(BcMath\Number)#6 (2) {
["value"]=>
string(4) "5.05"
["scale"]=>
int(2)
}
object(BcMath\Number)#7 (2) {
["value"]=>
string(4) "5.06"
["scale"]=>
int(2)
}
object(BcMath\Number)#8 (2) {
["value"]=>
string(3) "300"
["scale"]=>
int(0)
}
object(BcMath\Number)#9 (2) {
["value"]=>
string(1) "0"
["scale"]=>
int(0)
}
object(BcMath\Number)#10 (2) {
["value"]=>
string(3) "700"
["scale"]=>
int(0)
}
object(BcMath\Number)#11 (2) {
["value"]=>
string(4) "1000"
["scale"]=>
int(0)
}
Ejemplo #2
Ejemplo de uso de BcMath\Number::round() con diferentes valores de precisión
<?php
$number = new BcMath\Number('123.45');
var_dump(
$number->round(3),
$number->round(2),
$number->round(1),
$number->round(0),
$number->round(-1),
$number->round(-2),
$number->round(-3),
);
?>El ejemplo anterior mostrará:
object(BcMath\Number)#2 (2) {
["value"]=>
string(7) "123.450"
["scale"]=>
int(3)
}
object(BcMath\Number)#3 (2) {
["value"]=>
string(6) "123.45"
["scale"]=>
int(2)
}
object(BcMath\Number)#4 (2) {
["value"]=>
string(5) "123.5"
["scale"]=>
int(1)
}
object(BcMath\Number)#5 (2) {
["value"]=>
string(3) "123"
["scale"]=>
int(0)
}
object(BcMath\Number)#6 (2) {
["value"]=>
string(3) "120"
["scale"]=>
int(0)
}
object(BcMath\Number)#7 (2) {
["value"]=>
string(3) "100"
["scale"]=>
int(0)
}
object(BcMath\Number)#8 (2) {
["value"]=>
string(1) "0"
["scale"]=>
int(0)
}
Ejemplo #3
Ejemplo de uso de BcMath\Number::round() con diferentes valores de mode
<?php
echo 'Rounding modes with 9.5' . PHP_EOL;
$number = new BcMath\Number('9.5');
var_dump(
$number->round(0, RoundingMode::HalfAwayFromZero),
$number->round(0, RoundingMode::HalfTowardsZero),
$number->round(0, RoundingMode::HalfEven),
$number->round(0, RoundingMode::HalfOdd),
$number->round(0, RoundingMode::TowardsZero),
$number->round(0, RoundingMode::AwayFromZero),
$number->round(0, RoundingMode::NegativeInfinity),
$number->round(0, RoundingMode::PositiveInfinity),
);
echo PHP_EOL;
echo 'Rounding modes with 8.5' . PHP_EOL;
$number = new BcMath\Number('8.5');
var_dump(
$number->round(0, RoundingMode::HalfAwayFromZero),
$number->round(0, RoundingMode::HalfTowardsZero),
$number->round(0, RoundingMode::HalfEven),
$number->round(0, RoundingMode::HalfOdd),
$number->round(0, RoundingMode::TowardsZero),
$number->round(0, RoundingMode::AwayFromZero),
$number->round(0, RoundingMode::NegativeInfinity),
$number->round(0, RoundingMode::PositiveInfinity),
);
?>El ejemplo anterior mostrará:
Rounding modes with 9.5
object(BcMath\Number)#3 (2) {
["value"]=>
string(2) "10"
["scale"]=>
int(0)
}
object(BcMath\Number)#5 (2) {
["value"]=>
string(1) "9"
["scale"]=>
int(0)
}
object(BcMath\Number)#7 (2) {
["value"]=>
string(2) "10"
["scale"]=>
int(0)
}
object(BcMath\Number)#9 (2) {
["value"]=>
string(1) "9"
["scale"]=>
int(0)
}
object(BcMath\Number)#11 (2) {
["value"]=>
string(1) "9"
["scale"]=>
int(0)
}
object(BcMath\Number)#13 (2) {
["value"]=>
string(2) "10"
["scale"]=>
int(0)
}
object(BcMath\Number)#15 (2) {
["value"]=>
string(1) "9"
["scale"]=>
int(0)
}
object(BcMath\Number)#17 (2) {
["value"]=>
string(2) "10"
["scale"]=>
int(0)
}
Rounding modes with 8.5
object(BcMath\Number)#1 (2) {
["value"]=>
string(1) "9"
["scale"]=>
int(0)
}
object(BcMath\Number)#15 (2) {
["value"]=>
string(1) "8"
["scale"]=>
int(0)
}
object(BcMath\Number)#13 (2) {
["value"]=>
string(1) "8"
["scale"]=>
int(0)
}
object(BcMath\Number)#11 (2) {
["value"]=>
string(1) "9"
["scale"]=>
int(0)
}
object(BcMath\Number)#9 (2) {
["value"]=>
string(1) "8"
["scale"]=>
int(0)
}
object(BcMath\Number)#7 (2) {
["value"]=>
string(1) "9"
["scale"]=>
int(0)
}
object(BcMath\Number)#5 (2) {
["value"]=>
string(1) "8"
["scale"]=>
int(0)
}
object(BcMath\Number)#3 (2) {
["value"]=>
string(1) "9"
["scale"]=>
int(0)
}
Ejemplo #4
Ejemplo de uso de BcMath\Number::round() con diferentes valores de mode
especificando precisión
<?php
$positive = new BcMath\Number('1.55');
$negative = new BcMath\Number('-1.55');
echo 'Using RoundingMode::HalfAwayFromZero with 1 decimal digit precision' . PHP_EOL;
var_dump(
$positive->round(1, RoundingMode::HalfAwayFromZero),
$negative->round(1, RoundingMode::HalfAwayFromZero),
);
echo PHP_EOL;
echo 'Using RoundingMode::HalfTowardsZero with 1 decimal digit precision' . PHP_EOL;
var_dump(
$positive->round(1, RoundingMode::HalfTowardsZero),
$negative->round(1, RoundingMode::HalfTowardsZero),
);
echo PHP_EOL;
echo 'Using RoundingMode::HalfEven with 1 decimal digit precision' . PHP_EOL;
var_dump(
$positive->round(1, RoundingMode::HalfEven),
$negative->round(1, RoundingMode::HalfEven),
);
echo PHP_EOL;
echo 'Using RoundingMode::HalfOdd with 1 decimal digit precision' . PHP_EOL;
var_dump(
$positive->round(1, RoundingMode::HalfOdd),
$negative->round(1, RoundingMode::HalfOdd),
);
echo PHP_EOL;
echo 'Using RoundingMode::TowardsZero with 1 decimal digit precision' . PHP_EOL;
var_dump(
$positive->round(1, RoundingMode::TowardsZero),
$negative->round(1, RoundingMode::TowardsZero),
);
echo PHP_EOL;
echo 'Using RoundingMode::AwayFromZero with 1 decimal digit precision' . PHP_EOL;
var_dump(
$positive->round(1, RoundingMode::AwayFromZero),
$negative->round(1, RoundingMode::AwayFromZero),
);
echo PHP_EOL;
echo 'Using RoundingMode::NegativeInfinity with 1 decimal digit precision' . PHP_EOL;
var_dump(
$positive->round(1, RoundingMode::NegativeInfinity),
$negative->round(1, RoundingMode::NegativeInfinity),
);
echo PHP_EOL;
echo 'Using RoundingMode::PositiveInfinity with 1 decimal digit precision' . PHP_EOL;
var_dump(
$positive->round(1, RoundingMode::PositiveInfinity),
$negative->round(1, RoundingMode::PositiveInfinity),
);
?>El ejemplo anterior mostrará:
Using RoundingMode::HalfAwayFromZero with 1 decimal digit precision
object(BcMath\Number)#4 (2) {
["value"]=>
string(3) "1.6"
["scale"]=>
int(1)
}
object(BcMath\Number)#5 (2) {
["value"]=>
string(4) "-1.6"
["scale"]=>
int(1)
}
Using RoundingMode::HalfTowardsZero with 1 decimal digit precision
object(BcMath\Number)#4 (2) {
["value"]=>
string(3) "1.5"
["scale"]=>
int(1)
}
object(BcMath\Number)#6 (2) {
["value"]=>
string(4) "-1.5"
["scale"]=>
int(1)
}
Using RoundingMode::HalfEven with 1 decimal digit precision
object(BcMath\Number)#4 (2) {
["value"]=>
string(3) "1.6"
["scale"]=>
int(1)
}
object(BcMath\Number)#7 (2) {
["value"]=>
string(4) "-1.6"
["scale"]=>
int(1)
}
Using RoundingMode::HalfOdd with 1 decimal digit precision
object(BcMath\Number)#4 (2) {
["value"]=>
string(3) "1.5"
["scale"]=>
int(1)
}
object(BcMath\Number)#8 (2) {
["value"]=>
string(4) "-1.5"
["scale"]=>
int(1)
}
Using RoundingMode::TowardsZero with 1 decimal digit precision
object(BcMath\Number)#4 (2) {
["value"]=>
string(3) "1.5"
["scale"]=>
int(1)
}
object(BcMath\Number)#9 (2) {
["value"]=>
string(4) "-1.5"
["scale"]=>
int(1)
}
Using RoundingMode::AwayFromZero with 1 decimal digit precision
object(BcMath\Number)#4 (2) {
["value"]=>
string(3) "1.6"
["scale"]=>
int(1)
}
object(BcMath\Number)#10 (2) {
["value"]=>
string(4) "-1.6"
["scale"]=>
int(1)
}
Using RoundingMode::NegativeInfinity with 1 decimal digit precision
object(BcMath\Number)#4 (2) {
["value"]=>
string(3) "1.5"
["scale"]=>
int(1)
}
object(BcMath\Number)#11 (2) {
["value"]=>
string(4) "-1.6"
["scale"]=>
int(1)
}
Using RoundingMode::PositiveInfinity with 1 decimal digit precision
object(BcMath\Number)#4 (2) {
["value"]=>
string(3) "1.6"
["scale"]=>
int(1)
}
object(BcMath\Number)#12 (2) {
["value"]=>
string(4) "-1.5"
["scale"]=>
int(1)
}