PHPでは、 BCSQRT関数を使用して、BC Math Extensionに属する任意の精度数の平方根を計算します。使用する場合、着信パラメーターが要件を満たしていない場合、「番号以外の」エラーに遭遇することがよくあります。この記事では、このエラーの原因を詳細に分析し、対応するソリューションを提供します。
bcsqrt(string $ num、int $ scale = 0):string
$ num :入力された数値文字列は、非陰性の数値文字列でなければなりません(多数と小数をサポートします)。
$スケール:結果によって保持される小数点以下の場所の数、デフォルトは0です。
この関数は、パラメーター$ numの平方根を返し、結果は文字列形式でもあります。
入力パラメーターは純粋な数値文字列ではありません
BCSQRTでは、最初のパラメーターが非陰性の数字を表す文字列でなければならず、非数値文字を含めることはできません(小数点を除く)。渡されたパラメーターに文字、記号(負の兆候を除く)、スペースなどが含まれている場合、「非番号」エラーが発生します。
負の数を渡します
パラメーターは文字列ですが、数値が負の場合(たとえば、 '-9' )、関数は平方根を計算できず、エラーが報告されます。
空の文字列またはnull
空の文字列を渡す''またはnullは違法な入力と見なされ、エラーが発生します。
不適切なデジタル形式
その数値には複数の小数点が含まれているか、スペースが数字などの中央で混合され、エラーを引き起こす可能性があります。
正規表現またはPHPビルトイン関数を使用して、最初に入力を確認します。
<?php
function isValidNumber($num) {
return preg_match('/^\d+(\.\d+)?$/', $num);
}
$input = "123.45";
if (!isValidNumber($input)) {
echo "入力は有効な番号形式ではありません";
} else {
echo bcsqrt($input, 2);
}
?>
入力に否定的な兆候がある場合は、次のように判断する必要があります。
<?php
$input = "-9";
if (strpos($input, '-') === 0) {
echo "負の数の平方根を計算することはできません";
} else {
echo bcsqrt($input, 2);
}
?>
外部ソース(URLパラメーター、フォームデータなど)から取得した数値の場合、クリーニングと変換することが最善です。
<?php
$input = trim($_GET['num'] ?? '');
if ($input === '' || !is_numeric($input) || floatval($input) < 0) {
echo "入力のエラー,非陰性でなければなりません";
} else {
$numStr = (string)floatval($input);
echo bcsqrt($numStr, 4);
}
?>
<?php
bcscale(4);
echo bcsqrt('16');
?>
このようにして、出力の結果は4つの小数点以下の場所を自動的に保持します。
平方根を計算するために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
BCSQRT関数は、非陰性で正しくフォーマットされた数値文字列のみを処理できます。
「非番号」エラーは、ほとんどの入力形式が要件を満たしていないことが発生します。
入力検証、データクリーニング、およびパラメーターの判断により、エラーを回避できます。
実際の開発では、入力処理ロジックは、特定のビジネスシナリオ設計に基づいて入力する必要があります。
これらのポイントを理解することで、 BCSQRT関数の「非数値」エラーを効果的に解決し、プログラムの安定した動作を確保できます。