BcMath\Number::powmod

(PHP 8 >= 8.4.0)

BcMath\Number::powmod — Élève un nombre de précision arbitraire, réduit par un modulo spécifié

Description

public function BcMath\Number::powmod(BcMath\Number |string |int $exponent, BcMath\Number |string |int $modulus, ? int $scale = null ): BcMath\Number

Utilise la méthode rapide d'exponentiation pour élever $this à la puissance exponent par rapport au modulo modulus.

Liste de paramètres

exponent

L'exposant, en tant que valeur non négative et entière (c'est-à-dire que l'échelle doit être nulle).

modulus

Le modulo, en tant que valeur entière (c'est-à-dire que l'échelle doit être nulle).

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 sous forme d'un nouvel objet BcMath\Number .

Lorsque le BcMath\Number::scale du résultat est défini automatiquement, le BcMath\Number::scale de l'objet résultat sera toujours 0.

Erreurs / Exceptions

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

  • exponent ou modulus est un string et n'est pas une chaîne numérique BCMath bien formée
  • $this, exponent ou modulus a une partie fractionnelle
  • exponent est une valeur négative
  • scale est en dehors de la plage valide

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

Exemples

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

<?php
var_dump(
 new BcMath\Number('8')->powmod(new BcMath\Number('3'), 5),
 new BcMath\Number('-8')->powmod(new BcMath\Number('3'), 5),
 new BcMath\Number('8')->powmod('2', -3),
 new BcMath\Number('-8')->powmod(5, 7),
);
?>

L'exemple ci-dessus va afficher :

object(BcMath\Number)#3 (2) {
 ["value"]=>
 string(1) "2"
 ["scale"]=>
 int(0)
}
object(BcMath\Number)#4 (2) {
 ["value"]=>
 string(2) "-2"
 ["scale"]=>
 int(0)
}
object(BcMath\Number)#2 (2) {
 ["value"]=>
 string(1) "1"
 ["scale"]=>
 int(0)
}
object(BcMath\Number)#5 (2) {
 ["value"]=>
 string(2) "-1"
 ["scale"]=>
 int(0)
}

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

<?php
var_dump(
 new BcMath\Number('8')->powmod(new BcMath\Number('3'), 5, 1),
 new BcMath\Number('-8')->powmod(new BcMath\Number('3'), 5, 2),
 new BcMath\Number('8')->powmod('2', -3, 3),
 new BcMath\Number('-8')->powmod(5, 7, 4),
);
?>

L'exemple ci-dessus va afficher :

object(BcMath\Number)#3 (2) {
 ["value"]=>
 string(3) "2.0"
 ["scale"]=>
 int(1)
}
object(BcMath\Number)#4 (2) {
 ["value"]=>
 string(5) "-2.00"
 ["scale"]=>
 int(2)
}
object(BcMath\Number)#2 (2) {
 ["value"]=>
 string(5) "1.000"
 ["scale"]=>
 int(3)
}
object(BcMath\Number)#5 (2) {
 ["value"]=>
 string(7) "-1.0000"
 ["scale"]=>
 int(4)
}

Voir aussi

Found A Problem?

Learn How To Improve This Page • Submit a Pull Request • Report a Bug
+add a note

User Contributed Notes

There are no user contributed notes for this page.

AltStyle によって変換されたページ (->オリジナル) /