Position actuelle: Accueil> Derniers articles> Analyse des raisons pour lesquelles la fonction BCSQRT a rencontré des erreurs de "non-nombre" lors de l'utilisation

Analyse des raisons pour lesquelles la fonction BCSQRT a rencontré des erreurs de "non-nombre" lors de l'utilisation

gitbox 2025-06-03

En PHP, la fonction BCSQRT est utilisée pour calculer la racine carrée d'un numéro de précision arbitraire, qui appartient à l'extension mathématique de la Colombie-Britannique. Lorsque vous utilisez, si les paramètres entrants ne répondent pas aux exigences, vous rencontrerez souvent des erreurs de "non-nombre". Cet article analysera les causes de cette erreur en détail et fournira des solutions correspondantes.

1. Quelle est la fonction BCSQRT?

BCSQRT (String $ num, int $ scale = 0): chaîne

  • $ num : la chaîne numérique entrée doit être une chaîne numérique non négative (prend en charge de grands nombres et décimales).

  • $ Scale : le nombre de décimales conservées par le résultat, la valeur par défaut est 0.

Cette fonction renvoie la racine carrée du paramètre $ num , et le résultat est également au format de chaîne.

2. Causes d'erreurs "non-nombre"

  1. Le paramètre d'entrée n'est pas une chaîne numérique pure

    BCSQRT exige que le premier paramètre soit une chaîne représentant un nombre non négatif et ne peut contenir aucun caractères non nucères (sauf le point décimal). Si les paramètres passés contiennent des lettres, des symboles (à l'exception des signes négatifs), des espaces, etc., il entraînera une erreur "non-nombre".

  2. Passer en nombre négatif

    Bien que le paramètre soit une chaîne, si le nombre est négatif (par exemple, «-9» ), la fonction ne peut pas calculer la racine carrée et une erreur sera signalée.

  3. Chaîne vide ou nul

    Le passage d'une chaîne vide ' ou null sera considéré comme une entrée illégale, ce qui entraîne une erreur.

  4. Format numérique inapproprié

    Y compris que les nombres contiennent plusieurs décimaux, ou les espaces sont mélangés au milieu des nombres, etc., ils peuvent provoquer des erreurs.

3. Comment dépanner et résoudre

1. Entrez la vérification de la valeur

Utilisez des expressions régulières ou des fonctions intégrées PHP pour vérifier d'abord l'entrée:

 <?php
function isValidNumber($num) {
    return preg_match('/^\d+(\.\d+)?$/', $num);
}

$input = "123.45";

if (!isValidNumber($input)) {
    echo "L&#39;entrée n&#39;est pas un format de nombre valide";
} else {
    echo bcsqrt($input, 2);
}
?>

2. Assurez-vous que le nombre n'est pas négatif

Si l'entrée peut avoir un signe négatif, vous devez porter un jugement avant d'appeler:

 <?php
$input = "-9";

if (strpos($input, '-') === 0) {
    echo "Ne peut pas calculer la racine carrée d&#39;un nombre négatif";
} else {
    echo bcsqrt($input, 2);
}
?>

3. Filtrez ou convertir l'entrée

Pour les nombres obtenus à partir de sources externes (telles que les paramètres d'URL, les données de formulaire), il est préférable de nettoyer et de convertir:

 <?php
$input = trim($_GET['num'] ?? '');

if ($input === '' || !is_numeric($input) || floatval($input) < 0) {
    echo "Erreur de saisie,Doit être non négatif";
} else {
    $numStr = (string)floatval($input);
    echo bcsqrt($numStr, 4);
}
?>

4. Définissez les décimales par défaut en combinaison avec BCCALE

 <?php
bcscale(4);
echo bcsqrt('16');
?>

De cette façon, le résultat de sortie conservera automatiquement 4 décimales.

4. Exemple de code (avec démonstration d'URL)

Supposons qu'il existe une page PHP qui accepte les paramètres d'URL pour calculer la racine carrée, et le nom de domaine URL est uniformément remplacé par gitbox.net :

 <?php
// Exemple de lien: https://gitbox.net/calc.php?num=25

$num = trim($_GET['num'] ?? '');

if ($num === '' || !preg_match('/^\d+(\.\d+)?$/', $num)) {
    echo "Veuillez saisir le numéro non négatif correct!";
    exit;
}

$result = bcsqrt($num, 3);
echo "nombre {$num} La racine carrée est:{$result}";
?>

Lors de la visite:

 https://gitbox.net/calc.php?num=25

Sortir:

 nombre 25 La racine carrée est:5.000

5. Résumé

  • La fonction BCSQRT ne peut gérer que des chaînes numériques non négatives et correctement formatées.

  • L'erreur "non-nombre" se produit la plupart du format d'entrée ne répond pas aux exigences.

  • Les erreurs peuvent être évitées grâce à la vérification des entrées, au nettoyage des données et au jugement des paramètres.

  • Dans le développement réel, la logique de traitement des entrées doit être entrée en fonction d'une conception spécifique de scénarios d'entreprise.

La compréhension de ces points peut résoudre efficacement l'erreur "non numerique" de la fonction BCSQRT et assurer le fonctionnement stable du programme.