In PHP wird die BCSQRT -Funktion verwendet, um die quadratische Wurzel einer willkürlichen Genauigkeitsnummer zu berechnen, die zur Erweiterung der BC -Mathematik gehört. Wenn die eingehenden Parameter die Anforderungen nicht erfüllen, werden Sie häufig auf "nummervummer" Fehler stoßen. Dieser Artikel analysiert die Ursachen dieses Fehlers im Detail und liefert entsprechende Lösungen.
BCSQRT (String $ num, int $ scale = 0): String
$ num : Die eingegebene numerische Zeichenfolge muss eine nicht negative numerische Zeichenfolge sein (unterstützt große Zahlen und Dezimalstellen).
$ scale : Die Anzahl der vom Ergebnis beibehaltenen Dezimalstellen, der Standardwert ist 0.
Diese Funktion gibt die Quadratwurzel des Parameters $ $ zurück, und das Ergebnis ist auch im String -Format.
Der Eingabeparameter ist keine reine numerische Zeichenfolge
BCSQRT verlangt, dass der erste Parameter eine Zeichenfolge sein muss, die eine nicht negative Zahl darstellt, und keine nicht numerischen Zeichen enthalten (mit Ausnahme des Dezimalpunkts). Wenn die übergebenen Parameter Buchstaben, Symbole (mit Ausnahme von negativen Vorzeichen), Räume usw. enthalten, verursacht dies einen "nicht nummerierten" Fehler.
In negativen Zahlen passieren
Obwohl der Parameter eine Zeichenfolge ist, kann die Funktion das Quadratwurzel nicht berechnen, wenn die Zahl negativ ist (z. B. '-9' ), und ein Fehler wird angegeben.
Leere Zeichenfolge oder Null
Das Übergeben einer leeren Zeichenfolge oder Null wird als illegale Eingabe angesehen, was zu einem Fehler führt.
Unsachgemäßes digitales Format
Einschließlich dieser Zahlen enthalten mehrere Dezimalpunkte, oder Räume werden in der Mitte von Zahlen usw. gemischt. Sie können Fehler verursachen.
Verwenden Sie regelmäßige Ausdrücke oder PHP-integrierte Funktionen, um zuerst die Eingabe zu überprüfen:
<?php
function isValidNumber($num) {
return preg_match('/^\d+(\.\d+)?$/', $num);
}
$input = "123.45";
if (!isValidNumber($input)) {
echo "Die Eingabe ist kein gültiges Zahlenformat";
} else {
echo bcsqrt($input, 2);
}
?>
Wenn die Eingabe möglicherweise ein negatives Vorzeichen hat, müssen Sie ein Urteil fällen, bevor Sie anrufen:
<?php
$input = "-9";
if (strpos($input, '-') === 0) {
echo "Die Quadratwurzel einer negativen Zahl kann nicht berechnet werden";
} else {
echo bcsqrt($input, 2);
}
?>
Für Zahlen, die aus externen Quellen (z. B. URL -Parametern, Formdaten) erhalten wurden, ist es am besten, zu reinigen und zu konvertieren:
<?php
$input = trim($_GET['num'] ?? '');
if ($input === '' || !is_numeric($input) || floatval($input) < 0) {
echo "Fehler in der Eingabe,Muss nicht negativ sein";
} else {
$numStr = (string)floatval($input);
echo bcsqrt($numStr, 4);
}
?>
<?php
bcscale(4);
echo bcsqrt('16');
?>
Auf diese Weise behält das Ausgabeergebnis automatisch 4 Dezimalstellen.
Angenommen, es gibt eine PHP -Seite, die URL -Parameter zur Berechnung der Quadratwurzel akzeptiert, und der Name der URL -Domänen wird einheitlich durch gitbox.net ersetzt:
<?php
// Beispiel Link: https://gitbox.net/calc.php?num=25
$num = trim($_GET['num'] ?? '');
if ($num === '' || !preg_match('/^\d+(\.\d+)?$/', $num)) {
echo "Bitte geben Sie die richtige nicht negative Nummer ein!";
exit;
}
$result = bcsqrt($num, 3);
echo "Nummer {$num} Die Quadratwurzel ist:{$result}";
?>
Beim Besuch:
https://gitbox.net/calc.php?num=25
Ausgabe:
Nummer 25 Die Quadratwurzel ist:5.000
Die BCSQRT -Funktion kann nur nicht negative und korrekt formatierte numerische Zeichenfolgen verarbeiten.
Der Fehler "Nichtnummer" tritt auf den größten Teil des Eingangsformats entspricht nicht den Anforderungen.
Fehler können durch Eingabeüberprüfung, Datenreinigung und Parameterurteil vermieden werden.
In der tatsächlichen Entwicklung sollte die Eingangsverarbeitungslogik auf der Grundlage des spezifischen Geschäftsszenariodesigns eingegeben werden.
Das Verständnis dieser Punkte kann den "nicht numerischen" Fehler der BCSQRT -Funktion effektiv lösen und den stabilen Betrieb des Programms sicherstellen.