En PHP, lorsqu'ils traitent des opérateurs de comparaison numérique de précision arbitraire (tels que == , > , < ) ne parviennent souvent pas à répondre aux besoins, en particulier lorsque les nombres dépassent la précision du point flottant natif de PHP. À l'heure actuelle, la fonction BCComp devient le meilleur choix. Cet article présentera en détail l'utilisation de la fonction BCComp et partagera les étapes de l'opération pour la mise en œuvre de comparaisons numériques de précision arbitraire.
BCComp est une fonction de la bibliothèque d'extension mathématique BC de PHP, spécifiquement utilisée pour comparer deux chaînes numériques de précision arbitraire. Il renvoie trois valeurs possibles:
0: Deux nombres sont égaux
1: Le premier nombre est supérieur au deuxième nombre
-1: Le premier nombre est plus petit que le deuxième numéro
Le prototype de fonction de BCComp est le suivant:
int bccomp ( string $left_operand , string $right_operand [, int $scale = 0 ] )
$ Left_Operand et $ right_opeand sont deux chaînes numériques à comparer
$ l'échelle est la précision de comparaison après le point décimal (par défaut 0, indiquant la comparaison des entiers)
Étant donné que le nombre de points flottants de PHP a une précision finie, la comparaison des nombres dépassant une certaine longueur entraînera des erreurs. BCCOMP obtient une comparaison de haute précision des nombres grâce à des opérations de cordes, prend en charge les décimales de toute longueur et convient aux scénarios financiers, informatiques scientifiques et autres.
Assurez-vous que les deux nombres comparés sont au format de chaîne et sont conformes au format de nombre et peuvent contenir des points décimaux.
$num1 = "12345678901234567890.12345";
$num2 = "12345678901234567890.12346";
Spécifiez l' échelle de précision de comparaison $ , par exemple, si vous devez comparer 5 décimales, puis réglé sur 5.
$result = bccomp($num1, $num2, 5);
if ($result === 0) {
echo "Deux nombres sont égaux";
} elseif ($result === 1) {
echo "$num1 Supérieur à $num2";
} else {
echo "$num1 Moins que $num2";
}
<?php
// Exemple de comparaison de numéro de précision
$num1 = "9876543210.123456789";
$num2 = "9876543210.123456780";
// Après avoir comparé le point décimal8Peu
$scale = 8;
$result = bccomp($num1, $num2, $scale);
if ($result === 0) {
echo "Deux nombres sont égaux";
} elseif ($result === 1) {
echo "$num1 Supérieur à $num2";
} else {
echo "$num1 Moins que $num2";
}
?>
Le numéro transmis dans BCCOMP doit être une chaîne numérique légale, sinon une erreur sera signalée ou un résultat incorrect sera renvoyé.
Le paramètre de l'échelle $ détermine la précision de la comparaison des décimales et doit être fixé raisonnablement en fonction des exigences.
L'extension mathématique BC est activée en PHP par défaut, mais si une fonction ne peut pas être trouvée d'erreur, vous devez confirmer que l'extension bcmath est activée dans php.ini.
Grâce au contenu ci-dessus, vous pouvez facilement utiliser la fonction BCCOMP pour obtenir une comparaison numérique de la précision arbitraire pour éviter les problèmes d'erreur causés par la précision des points flottants.
<?php
// utiliserbccompFonctions Comparez deux nombres de haute précision,Exemple de démonstration de code
$num1 = "12345.67890123456789";
$num2 = "12345.67890123456780";
$scale = 14;
$result = bccomp($num1, $num2, $scale);
if ($result === 0) {
echo "Deux nombres sont égaux";
} elseif ($result === 1) {
echo "$num1 Supérieur à $num2";
} else {
echo "$num1 Moins que $num2";
}
?>