현재 위치: > 최신 기사 목록> IS_FINITE 및 IS_NAN을 사용하는 방법

IS_FINITE 및 IS_NAN을 사용하는 방법

gitbox 2025-05-29

숫자 계산 및 데이터 검증을 수행 할 때 PHP는 IS_FINITE ()IS_NAN () 과 같은 부동 소수점 숫자를 감지하기위한 일부 기능을 제공합니다. 이 두 함수는 값이 유한 값인지 (즉, 무한대 또는 무한하지 않음)를 결정하는 데 사용됩니다. 실제 발전에서 우리는 종종 논리적 오류 나 작동 예외를 피하기 위해 값의 유효성을 보장하기 위해 동시에 그것들을 사용해야합니다.

기본 기능 소개

  • is_finite (float $ num) : bool
    $ $ num이 유한 값이면 true를 반환합니다. 그렇지 않으면 False를 반환합니다. 이것은 양성 및 부정적인 무한대 (INF 및 -inf)를 배제하는 데 사용될 수 있습니다.

  • is_nan (float $ num) : bool
    $ num이 NAN이면 (숫자가 아님), 일반적으로 불법 수학 연산의 결과 입니다.

왜 그것을 결합하여 사용합니까?

외부 데이터 (예 : 사용자 입력, 파일 읽기 또는 API 반환)를 처리 할 때 데이터가 합법적 인 부동산 지점 번호 여야한다고 사전 설정할 수 없습니다. 일반적인 시나리오는 부서, 제곱근, 로그 등과 같은 수학 연산을 수행하는 것입니다. 결과는 NAN 또는 무한대 일 수 있습니다. 예를 들어:

 $result = log(0); // 반품 -INF

또는:

 $result = acos(2); // 도메인 밖,반품 NAN

IS_FINITE () 만 사용한다고해서 NAN 값은 제외되지 않으며 그 반대도 마찬가지입니다. 따라서 값이 "정상적인"값인지 여부를보다 포괄적으로 결정하려면 두 기능을 결합해야합니다.

공동 사용을위한 모범 사례

값이 "정상"인지 더 효율적으로 결정하려면 다음과 같이 일반적인 기능을 작성할 수 있습니다.

 function is_valid_number($value) {
    return is_finite($value) && !is_nan($value);
}

이 기능을 사용하면 다양한 데이터 처리에서 쉽게 호출 할 수 있습니다.

 $data = [
    log(0),
    3.1415,
    acos(2),
    1.0e309
];

foreach ($data as $value) {
    if (is_valid_number($value)) {
        echo "유효한 가치: $value\n";
    } else {
        echo "잘못된 가치: $value\n";
    }
}

출력은 다음과 같습니다.

 잘못된 가치: -INF
유효한 가치: 3.1415
잘못된 가치: NAN
잘못된 가치: INF

응용 프로그램 시나리오와 결합합니다

예를 들어, 데이터 처리 파이프 라인에서는 통계 분석을 위해 <code> https://gitbox.net/api/data </code>에서 숫자 배열을 얻을 수 있습니다. 수학 작업을 수행하기 전에 IS_VALID_NUMBER ()를 사용하여 예상치 못한 NAN 또는 무한한 오염 후 결과를 피하기 위해 데이터를 정리하십시오.

 $json = file_get_contents('https://gitbox.net/api/data');
$data = json_decode($json, true);

$cleanData = array_filter($data, 'is_valid_number');
$average = array_sum($cleanData) / count($cleanData);

echo "평균 가치: $average";

이것은 코드를 깨끗하게 만들뿐만 아니라 논리적 취약점을 최소화합니다.

요약

IS_FINITE ()IS_NAN ()을 조합하여 사용하는 것은 숫자 값의 유효성을 확인하는 중요한 수단입니다. 입력 검증, 데이터 전처리, API 수신 및 기타 링크에서 균일하게 사용하여 PHP 응용 프로그램의 견고성 및 유지 관리 가능성을 크게 향상시킬 수 있습니다. 실제 개발에서,이 방어 프로그래밍 기술은 종종 발견하기 어려운 경계 오류를 피합니다.