現在の位置: ホーム> 最新記事一覧> BCSQRT関数がそれを使用するときに「番号以外」エラーが発生した理由の分析

BCSQRT関数がそれを使用するときに「番号以外」エラーが発生した理由の分析

gitbox 2025-06-03

PHPでは、 BCSQRT関数を使用して、BC Math Extensionに属する任意の精度数の平方根を計算します。使用する場合、着信パラメーターが要件を満たしていない場合、「番号以外の」エラーに遭遇することがよくあります。この記事では、このエラーの原因を詳細に分析し、対応するソリューションを提供します。

1。BCSQRT機能とは何ですか?

bcsqrt(string $ num、int $ scale = 0):string

  • $ num :入力された数値文字列は、非陰性の数値文字列でなければなりません(多数と小数をサポートします)。

  • $スケール:結果によって保持される小数点以下の場所の数、デフォルトは0です。

この関数は、パラメーター$ numの平方根を返し、結果は文字列形式でもあります。

2。「番号以外」エラーの原因

  1. 入力パラメーターは純粋な数値文字列ではありません

    BCSQRTでは、最初のパラメーターが非陰性の数字を表す文字列でなければならず、非数値文字を含めることはできません(小数点を除く)。渡されたパラメーターに文字、記号(負の兆候を除く)、スペースなどが含まれている場合、「非番号」エラーが発生します。

  2. 負の数を渡します

    パラメーターは文字列ですが、数値が負の場合(たとえば、 '-9' )、関数は平方根を計算できず、エラーが報告されます。

  3. 空の文字列またはnull

    空の文字列を渡す''またはnullは違法な入力と見なされ、エラーが発生します。

  4. 不適切なデジタル形式

    その数値には複数の小数点が含まれているか、スペースが数字などの中央で混合され、エラーを引き起こす可能性があります。

3.トラブルシューティングと解決方法

1。値の確認を入力します

正規表現またはPHPビルトイン関数を使用して、最初に入力を確認します。

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

$input = "123.45";

if (!isValidNumber($input)) {
    echo "入力は有効な番号形式ではありません";
} else {
    echo bcsqrt($input, 2);
}
?>

2.数が非陰性であることを確認してください

入力に否定的な兆候がある場合は、次のように判断する必要があります。

 <?php
$input = "-9";

if (strpos($input, '-') === 0) {
    echo "負の数の平方根を計算することはできません";
} else {
    echo bcsqrt($input, 2);
}
?>

3.入力をフィルターまたは変換します

外部ソース(URLパラメーター、フォームデータなど)から取得した数値の場合、クリーニングと変換することが最善です。

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

if ($input === '' || !is_numeric($input) || floatval($input) < 0) {
    echo "入力のエラー,非陰性でなければなりません";
} else {
    $numStr = (string)floatval($input);
    echo bcsqrt($numStr, 4);
}
?>

4. bccaleと組み合わせてデフォルトの小数点を設定する

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

このようにして、出力の結果は4つの小数点以下の場所を自動的に保持します。

4.サンプルコード(URLデモンストレーション付き)

平方根を計算するためにURLパラメーターを受け入れるPHPページがあり、URLドメイン名がgitbox.netに均一に置き換えられているとします。

 <?php
// リンクの例: https://gitbox.net/calc.php?num=25

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

if ($num === '' || !preg_match('/^\d+(\.\d+)?$/', $num)) {
    echo "正しい非陰性番号を入力してください!";
    exit;
}

$result = bcsqrt($num, 3);
echo "番号 {$num} 平方根はです:{$result}";
?>

訪問するとき:

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

出力:

 番号 25 平方根はです:5.000

5。概要

  • BCSQRT関数は、非陰性で正しくフォーマットされた数値文字列のみを処理できます。

  • 「非番号」エラーは、ほとんどの入力形式が要件を満たしていないことが発生します。

  • 入力検証、データクリーニング、およびパラメーターの判断により、エラーを回避できます。

  • 実際の開発では、入力処理ロジックは、特定のビジネスシナリオ設計に基づいて入力する必要があります。

これらのポイントを理解することで、 BCSQRT関数の「非数値」エラーを効果的に解決し、プログラムの安定した動作を確保できます。