API Platform Conference 2025

BcMath\Number::div

(PHP 8 >= 8.4.0)

BcMath\Number::divDivise par un nombre de précision arbitraire

Description

public BcMath\Number::div(BcMath\Number|string|int $num, ?int $scale = null): BcMath\Number

Divise $this par num.

Liste de paramètres

num
Le diviseur.
scale
scale spécifié explicitement pour les résultats du calcul. Si null, le scale du résultat du calcul sera défini automatiquement.

Valeurs de retour

Renvoie le résultat d'une division sous forme d'un nouvel objet BcMath\Number.

Lorsque le BcMath\Number::scale du résultat est défini automatiquement, le BcMath\Number::scale du dividende est utilisé. Cependant, dans des cas tel que la division indivisible, le BcMath\Number::scale du résultat est étendu. L'extension est effectuée uniquement si nécessaire, jusqu'à un maximum de +10.

C'est-à-dire que si le BcMath\Number::scale du dividende est 5, la BcMath\Number::scale du résultat est entre 5 et 15.

Même dans des calculs indivisibles, le BcMath\Number::scale ne sera pas toujours +10. Un 0 à la fin du résultat est considéré comme ne nécessitant pas d'extension, donc le BcMath\Number::scale est réduit de cette quantité. Le BcMath\Number::scale ne sera jamais inférieur au BcMath\Number::scale avant l'extension. Voir également les exemples de code.

Erreurs / Exceptions

Cette méthode lève une ValueError dans les cas suivants :

  • num est un string et n'est pas une chaîne numérique BCMath bien formée
  • scale est hors de la plage valide
  • BcMath\Number::scale du résultat est hors de la plage valide

Cette méthode lève une DivisionByZeroError si num est 0.

Exemples

Exemple #1 Exemple BcMath\Number::div() lorsque scale n'est pas spécifié

<?php
$number
= new BcMath\Number('0.002');

$ret1 = $number->div(new BcMath\Number('2.000'));
$ret2 = $number->div('-3');
$ret3 = $number->div(32);

var_dump($number, $ret1, $ret2, $ret3);
?>

L'exemple ci-dessus va afficher :

object(BcMath\Number)#1 (2) {
  ["value"]=>
  string(5) "0.002"
  ["scale"]=>
  int(3)
}
object(BcMath\Number)#3 (2) {
  ["value"]=>
  string(5) "0.001"
  ["scale"]=>
  int(3)
}
object(BcMath\Number)#2 (2) {
  ["value"]=>
  string(16) "-0.0006666666666"
  ["scale"]=>
  int(13)
}
object(BcMath\Number)#4 (2) {
  ["value"]=>
  string(9) "0.0000625"
  ["scale"]=>
  int(7)
}

Exemple #2 Exemple de BcMath\Number::div() en spécifiant scale explicitement

<?php
$number
= new BcMath\Number('0.002');

$ret1 = $number->div(new BcMath\Number('2.000'), 15);
$ret2 = $number->div('-3', 5);
$ret3 = $number->div(32, 2);

var_dump($number, $ret1, $ret2, $ret3);
?>

L'exemple ci-dessus va afficher :

object(BcMath\Number)#1 (2) {
  ["value"]=>
  string(5) "0.002"
  ["scale"]=>
  int(3)
}
object(BcMath\Number)#3 (2) {
  ["value"]=>
  string(17) "0.001000000000000"
  ["scale"]=>
  int(15)
}
object(BcMath\Number)#2 (2) {
  ["value"]=>
  string(8) "-0.00066"
  ["scale"]=>
  int(5)
}
object(BcMath\Number)#4 (2) {
  ["value"]=>
  string(4) "0.00"
  ["scale"]=>
  int(2)
}

Exemple #3 Exemple de BcMath\Number::div() en expansionnant BcMath\Number::scale de l'objet résultat

<?php
var_dump
(
new
BcMath\Number('0.001')->div('10001'),
new
BcMath\Number('0.001')->div('10001', 13),
new
BcMath\Number('0.001')->div('100000000000001'),
);
?>

L'exemple ci-dessus va afficher :

object(BcMath\Number)#2 (2) {
  ["value"]=>
  string(13) "0.00000009999"
  ["scale"]=>
  int(11)
}
object(BcMath\Number)#3 (2) {
  ["value"]=>
  string(15) "0.0000000999900"
  ["scale"]=>
  int(13)
}
object(BcMath\Number)#4 (2) {
  ["value"]=>
  string(5) "0.000"
  ["scale"]=>
  int(3)
}

Voir aussi

add a note

User Contributed Notes

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