(PHP 8 >= 8.4.0)
bcround — Arrondit un nombre de précision arbitraire
$num
, int $precision
= 0, RoundingMode $mode
= RoundingMode::HalfAwayFromZero): string
Renvoie la valeur arrondie de num
à
la précision spécifiée precision
(nombre de chiffres après la virgule).
precision
peut également être négatif ou nul (par défaut).
num
La valeur à arrondir.
precision
Le nombre optionnel de décimales à arrondir.
Si le paramètre precision
est positif,
num
sera arrondi en utilisant le paramètre
precision
pour définir le nombre significatif
de chiffres après le point décimal.
Si le paramètre precision
est négatif,
num
arrondi en utilisant le paramètre
precision
pour définir le nombre significatif
de chiffres avant le point décimal, i.e. le multiple le plus proche
de pow(10, -$precision)
, i.e. pour une
precision
de -1, num
sera arrondi à 10, pour une precision
de -2 à 100, etc.
mode
Renvoie une chaîne numérique représentant num
arrondi à la précision donnée.
Cette fonction lance une ValueError dans les cas suivants :
num
n'est pas une chaîne numérique BCMath bien formée.precision
est en dehors de la plage valide.Exemple #1 Exemples 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));
?>
L'exemple ci-dessus va afficher :
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"
Exemple #2
Exemple de l'utilisation de bcround() avec différentes valeurs 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));
?>
L'exemple ci-dessus va afficher :
string(7) "123.450" string(6) "123.45" string(5) "123.5" string(3) "123" string(3) "120" string(3) "100" string(1) "0"
Exemple #3
Exemple de l'utilisation de bcround() avec différentes valeurs de mode
<?php
echo 'Modes d'arrondissements avec 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 'Modes d'arrondissements avec 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));
?>
L'exemple ci-dessus va afficher :
Modes d'arrondissements avec 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" Modes d'arrondissements avec 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"
Exemple #4
Exemple de l'utilisation de bcround() avec différentes valeurs de mode
lors de la spécification de precision
<?php
echo 'Utilisation de RoundingMode::HalfAwayFromZero avec une précision décimal de 1' . PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::HalfAwayFromZero));
var_dump(bcround(-1.55, 1, RoundingMode::HalfAwayFromZero));
echo PHP_EOL;
echo 'Utilisation de RoundingMode::HalfTowardsZero avec une précision décimal de 1' . PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::HalfTowardsZero));
var_dump(bcround(-1.55, 1, RoundingMode::HalfTowardsZero));
echo PHP_EOL;
echo 'Utilisation de RoundingMode::HalfEven avec une précision décimal de 1' . PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::HalfEven));
var_dump(bcround(-1.55, 1, RoundingMode::HalfEven));
echo PHP_EOL;
echo 'Utilisation de RoundingMode::HalfOdd avec une précision décimal de 1' . PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::HalfOdd));
var_dump(bcround(-1.55, 1, RoundingMode::HalfOdd));
echo PHP_EOL;
echo 'Utilisation de RoundingMode::TowardsZero avec une précision décimal de 1' . PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::TowardsZero));
var_dump(bcround(-1.55, 1, RoundingMode::TowardsZero));
echo PHP_EOL;
echo 'Utilisation de RoundingMode::AwayFromZero avec une précision décimal de 1' . PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::AwayFromZero));
var_dump(bcround(-1.55, 1, RoundingMode::AwayFromZero));
echo PHP_EOL;
echo 'Utilisation de RoundingMode::NegativeInfinity avec une précision décimal de 1' . PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::NegativeInfinity));
var_dump(bcround(-1.55, 1, RoundingMode::NegativeInfinity));
echo PHP_EOL;
echo 'Utilisation de RoundingMode::PositiveInfinity avec une précision décimal de 1' . PHP_EOL;
var_dump(bcround( 1.55, 1, RoundingMode::PositiveInfinity));
var_dump(bcround(-1.55, 1, RoundingMode::PositiveInfinity));
?>
L'exemple ci-dessus va afficher :
Utilisation de RoundingMode::HalfAwayFromZero avec une précision décimal de 1 string(3) "1.6" string(4) "-1.6" Utilisation de RoundingMode::HalfTowardsZero avec une précision décimal de 1 string(3) "1.5" string(4) "-1.5" Utilisation de RoundingMode::HalfEven avec une précision décimal de 1 string(3) "1.6" string(4) "-1.6" Utilisation de RoundingMode::HalfOdd avec une précision décimal de 1 string(3) "1.5" string(4) "-1.5" Utilisation de RoundingMode::TowardsZero avec une précision décimal de 1 string(3) "1.5" string(4) "-1.5" Utilisation de RoundingMode::AwayFromZero avec une précision décimal de 1 string(3) "1.6" string(4) "-1.6" Utilisation de RoundingMode::NegativeInfinity avec une précision décimal de 1 string(3) "1.5" string(4) "-1.6" Utilisation de RoundingMode::PositiveInfinity avec une précision décimal de 1 string(3) "1.6" string(4) "-1.5"