# BcMath\Number::div

(PHP 8 >= 8.4.0)

BcMath\Number::div — Divise 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`
  BcMath\Number::scale spécifié explicitement pour les résultats du calcul. Si `null`, le BcMath\Number::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

- bcdiv() - Divise deux nombres de grande taille
- BcMath\Number::divmod() - Renvoie le quotient et le modulo d'un nombre de précision arbitraire
- BcMath\Number::mod() - Renvoie le modulo d'un nombre de précision arbitraire
- BcMath\Number::sqrt() - Renvoie la racine carré d'un nombre de précision arbitraire
- BcMath\Number::pow() - Elève un nombre de précision arbitraire
- BcMath\Number::mul() - Multiplie un nombre de précision arbitraire