bcround

(PHP 8 >= 8.4.0)

bcroundArrondit un nombre de précision arbitraire

Description

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

Liste de paramètres

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
Spécifie le mode d'arrondi.

Valeurs de retour

Renvoie une chaîne numérique représentant num arrondi à la précision donnée.

Erreurs / Exceptions

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.

Exemples

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"

Voir aussi

  • bcceil() - Arrondit au supérieur un nombre de précision arbitraire
  • bcfloor() - Arrondit à l'inférieur un nombre de précision arbitraire
add a note

User Contributed Notes

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