현재 위치: > 최신 기사 목록> BCSQRT 기능의 "Non-Number"오류의 이유는 무엇입니까? 솔루션 분석

BCSQRT 기능의 "Non-Number"오류의 이유는 무엇입니까? 솔루션 분석

gitbox 2025-06-03

PHP에서 BCSQRT 함수는 BC 수학 확장에 속하는 임의의 정밀 번호의 제곱근을 계산하는 데 사용됩니다. 사용하는 경우, 들어오는 매개 변수가 요구 사항을 충족하지 않으면 종종 "Non-Number"오류가 발생합니다. 이 기사는이 오류의 원인을 자세히 분석하고 해당 솔루션을 제공합니다.

1. BCSQRT 기능은 무엇입니까?

bcsqrt (문자열 $ num, int $ scale = 0) : 문자열

  • $ num : 입력 된 숫자 문자열은 음이 아닌 숫자 문자열이어야합니다 (많은 수와 소수점을지지).

  • $ scale : 결과에 의해 유지되는 소수점 자리의 수는 기본값은 0입니다.

이 함수는 매개 변수 $ num 의 제곱근을 리턴하고 결과는 문자열 형식입니다.

2. "비 번호"오류의 원인

  1. 입력 매개 변수는 순수한 숫자 문자열이 아닙니다

    BCSQRT는 첫 번째 매개 변수가 음성이 아닌 숫자를 나타내는 문자열이어야하며 숫자가 아닌 문자 (소수점 제외)를 포함 할 수 없습니다. 전달 된 매개 변수에 문자, 기호 (음수 부호 제외), 공백 등이 포함 된 경우 "비 번호"오류가 발생합니다.

  2. 음수로 전달하십시오

    매개 변수는 문자열이지만 숫자가 음수 인 경우 (예 : '-9' ) 함수는 제곱근을 계산할 수 없으며 오류 가보고됩니다.

  3. 비어있는 문자열 또는 널

    빈 문자열 '' 또는 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 함수는 비 음성 및 올바른 형식의 숫자 문자열 만 처리 할 수 ​​있습니다.

  • "Non-Number"오류는 대부분의 입력 형식이 요구 사항을 충족하지 않습니다.

  • 입력 검증, 데이터 정리 및 매개 변수 판단을 통해 오류를 피할 수 있습니다.

  • 실제 개발에서 입력 처리 로직은 특정 비즈니스 시나리오 설계를 기반으로 입력해야합니다.

이러한 요점을 이해하면 BCSQRT 기능의 "숫자가 아닌"오류를 효과적으로 해결하고 프로그램의 안정적인 작동을 보장 할 수 있습니다.