PHP에서 IS_NAN 함수는 변수가 "NAN"인지 (숫자가 아님)를 감지하는 데 사용됩니다. 이 기능은 대부분의 비 언어 예외를 효과적으로 판단 할 수 있지만 Infinity 와 같은 특수 숫자 값을 다룰 때 개발자를 혼동합니다.
NAN (숫자가 아님) : 숫자가 아닌 특수 값을 나타냅니다. 일반적으로 계산 결과를 0/0 또는 음의 제곱근 번호와 같은 숫자 값으로 정의 할 수없는 경우에 발생합니다.
무한대 : PHP가 지원하는 최대 부동 값을 초과 할 때 일반적으로 발생하는 매우 큰 값을 나타냅니다. 예를 들어, 1/0을 계산할 때는 INF (양의 무한) 또는 -inf (음의 무한)가 나타납니다.
PHP에서 IS_NAN 함수는 값이 NAN 인지 여부 만 결정하며 그것이 무한대 인지를 결정하지 않습니다. 예를 들어:
var_dump(is_nan(NAN)); // bool(true)
var_dump(is_nan(INF)); // bool(false)
var_dump(is_nan(-INF)); // bool(false)
보시다시피, IS_NAN은 값이 NAN 인 경우에만 TRUE를 반환합니다. INF 또는 -inf Return False 와 같은 다른 하나는 INF 와 NAN이 예외의 수치 상태를 나타 내기 때문에 개발자를 혼동 할 수 있습니다.
무한대 와 NAN 의 판단을 처리하기 위해 다른 기능을 결합 하여이 문제를 해결할 수 있습니다. PHP에는 값이 무한대 (양수 또는 음의 무한)인지 결정하는 데 사용될 수있는 IS_Infinite 함수가 있으며, IS_NAN 은 "NAN"인지 결정하는 데 사용됩니다.
<?php
function is_nan_or_infinite($value) {
if (is_nan($value)) {
return 'NaN';
} elseif (is_infinite($value)) {
return 'Infinity';
} else {
return 'Neither NaN nor Infinity';
}
}
echo is_nan_or_infinite(NAN); // 산출 NaN
echo is_nan_or_infinite(INF); // 산출 Infinity
echo is_nan_or_infinite(-INF); // 산출 Infinity
echo is_nan_or_infinite(123); // 산출 Neither NaN nor Infinity
?>
이 사용자 지정 기능은 is_nan_or_infinite는 두 가지 특수 값 Nan 과 Infinity를 판단합니다. 먼저 is_nan을 사용한 다음 is_infinite를 사용하여 판단하면 두 가지를 정확하게 구별 할 수 있습니다.
NAN은 일반적으로 수학적 계산 오류, 0/0 또는 SQRT (-1) 와 같은 작업이 NAN을 반환 할 때 발생합니다. 따라서 데이터 처리에서 이러한 특이 치가 발생하면 결과에 영향을 미치지 않도록 제 시간에 처리해야합니다.
무한대는 일반적으로 1/0 또는 매우 큰 수치 계산과 같은 수학적 오버플로가 INF 또는 -inf를 반환 할 때 발생합니다. 응용 프로그램에서 무한대는 정상적인 데이터 흐름에 영향을 줄 수 있으므로 비즈니스 요구에 따라 합리적으로 처리해야합니다.