현재 위치: > 최신 기사 목록> IS_INT를 사용할 때 부동 소수점 번호가 정수라고 판단하는 오류를 피하는 방법은 무엇입니까?

IS_INT를 사용할 때 부동 소수점 번호가 정수라고 판단하는 오류를 피하는 방법은 무엇입니까?

gitbox 2025-05-31

IS_INT를 사용하여 부동 소수점 번호를 판단 할 때 오류를 피하는 방법은 무엇입니까?

부동 소수점 번호가 정수 값인지 여부를 결정하려면 다음 방법을 사용할 수 있습니다.

1. floor () 또는 Ceil () 함수를 사용하여 비교하십시오

부동 소수점 번호가 정수 인 경우 바닥 () (둥글게) 및 Ceil () (라운드)은 그 자체와 같아야합니다.

샘플 코드 :

 <?php
function isFloatInteger($num) {
    if (!is_float($num)) {
        return false;
    }
    return floor($num) == $num;
}

var_dump(isFloatInteger(3.0));   // bool(true)
var_dump(isFloatInteger(3.5));   // bool(false)
var_dump(isFloatInteger(4));     // bool(false) — 4정수입니다,부동 소수점 번호가 아닙니다
?>

이 코드는 먼저 부동 소수점 번호인지 여부를 결정한 다음 Floor ()를 사용하여 정수 값인지 확인합니다.

2. 유형 변환 및 비교를 활용합니다

부동 소수점 번호를 정수로 변환 한 다음 원래 값과 동일인지 비교할 수 있습니다.

 <?php
function isFloatValueInteger($num) {
    return is_float($num) && (int)$num == $num;
}

var_dump(isFloatValueInteger(5.0));  // bool(true)
var_dump(isFloatValueInteger(5.1));  // bool(false)
?>

이 방법은 간단하고 직관적입니다.

3. filter_var를 사용하여 일반 표현식을 결합하십시오

변수가 문자열 유형 인 경우 정규 표현식을 사용하여 플로팅 포인트로 표시되는 정수 여부를 결정할 수도 있습니다.

 <?php
function isFloatStringInteger($str) {
    return preg_match('/^-?\d+\.0+$/', $str) === 1;
}

var_dump(isFloatStringInteger("3.0"));   // bool(true)
var_dump(isFloatStringInteger("3.00"));  // bool(true)
var_dump(isFloatStringInteger("3.1"));   // bool(false)
?>

입력 문자열 데이터를 처리하는 데 적합합니다.


요약

  • is_int () 변수 유형이 정수인지 여부를 결정하고 값 자체가 정수인지 여부를 결정하지 않습니다.

  • 부동 소수점 번호의 값이 정수 (예 : 3.0)이더라도 is_int ()를 사용하여 판단하여 False를 반환합니다.

  • 부동 소수점 번호가 정수 값인지 확인 해야하는 경우 Floor () , (int) 유형 변환 또는 일반 표현식 및 기타 방법을 사용할 수 있습니다.

  • 유형의 판단 오류로 인한 프로그램 예외를 피하기 위해 실제 시나리오에 따라 적절한 방법을 선택하십시오.

더 많은 PHP 관련 콘텐츠는 gitbox.net/php-tutorial 을 참조하십시오.