In PHP, wenn es um willkürliche Präzisions -numerische Vergleichsoperatoren geht (z. B. == , > , < ) wird die Bedürfnisse häufig nicht erfüllen, insbesondere wenn die Zahlen den nativen schwimmenden Punktgenauigkeit von PHP überschreiten. Zu diesem Zeitpunkt wird die BCComp -Funktion zur besten Wahl. In diesem Artikel wird die Verwendung der BCCOMM -Funktion im Detail vorgestellt und die Betriebsschritte für die Implementierung beliebiger numerischer Vergleiche weitergegeben.
BCComp ist eine Funktion in der BC Math Extension Library von PHP, die speziell zum Vergleich von zwei numerischen Zeichenfolgen willkürlicher Präzision verwendet wird. Es gibt drei mögliche Werte zurück:
0: Zwei Zahlen sind gleich
1: Die erste Zahl ist größer als die zweite Zahl
-1: Die erste Zahl ist kleiner als die zweite Zahl
Der Funktionsprototyp von BCCOMM lautet wie folgt:
int bccomp ( string $left_operand , string $right_operand [, int $scale = 0 ] )
$ links_operand und $ right_operand sind zwei numerische Saiten, die man vergleichen kann
$ scale ist die Vergleichsgenauigkeit nach dem Dezimalpunkt (Standard 0, was den Ganzzahlvergleich anzeigt)
Da die schwimmende Punktzahl von PHP eine endliche Genauigkeit aufweist, verursacht der Vergleich der Zahlen, die eine bestimmte Länge überschreiten, Fehler. BCCOMP erreicht einen hohen Präzisionsvergleich von Zahlen durch String-Operationen, unterstützt Dezimalstellen jeglicher Länge und eignet sich für finanzielle, wissenschaftliche Computing und andere Szenarien.
Stellen Sie sicher, dass die beiden verglichenen Zahlen im String -Format sind und dem Zahlenformat entsprechen und Dezimalpunkte enthalten können.
$num1 = "12345678901234567890.12345";
$num2 = "12345678901234567890.12346";
Geben Sie beispielsweise die Vergleichsgenauigkeit $ Scale an, wenn Sie 5 Dezimalstellen vergleichen müssen, und dann auf 5 festlegen.
$result = bccomp($num1, $num2, 5);
if ($result === 0) {
echo "Zwei Zahlen sind gleich";
} elseif ($result === 1) {
echo "$num1 Größer als $num2";
} else {
echo "$num1 Weniger als $num2";
}
<?php
// Beispiel eines Präzisionsnummernvergleichs
$num1 = "9876543210.123456789";
$num2 = "9876543210.123456780";
// Nach dem Vergleich des Dezimalpunkts8Bisschen
$scale = 8;
$result = bccomp($num1, $num2, $scale);
if ($result === 0) {
echo "Zwei Zahlen sind gleich";
} elseif ($result === 1) {
echo "$num1 Größer als $num2";
} else {
echo "$num1 Weniger als $num2";
}
?>
Die in BCComp übergebene Nummer muss eine legale numerische Zeichenfolge sein, andernfalls wird ein Fehler gemeldet oder ein falsches Ergebnis wird zurückgegeben.
Der Parameter $ scale bestimmt die Genauigkeit des Vergleichs von Dezimalpunkten und muss nach den Anforderungen angemessen eingestellt werden.
Die BC -Mathematikerweiterung ist standardmäßig in PHP aktiviert. Wenn jedoch keine Funktion zu einem Fehler gefunden werden kann, müssen Sie bestätigen, dass die BCMATH -Erweiterung in php.ini aktiviert ist.
Durch den oben genannten Inhalt können Sie die BCCOMM -Funktion problemlos verwenden, um einen numerischen Vergleich der willkürlichen Genauigkeit zu erreichen, um Fehlerprobleme zu vermeiden, die durch die Genauigkeit der schwimmenden Punkte verursacht werden.
<?php
// verwendenbccompFunktionen vergleichen zwei hochpräzisen Nummern,Beispielcode Demonstration
$num1 = "12345.67890123456789";
$num2 = "12345.67890123456780";
$scale = 14;
$result = bccomp($num1, $num2, $scale);
if ($result === 0) {
echo "Zwei Zahlen sind gleich";
} elseif ($result === 1) {
echo "$num1 Größer als $num2";
} else {
echo "$num1 Weniger als $num2";
}
?>