개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.06.17 08:53

is_numeric 함수를 사용하여 숫자형 데이터 확인 방법

목록
  • DDD전문가 오래 전 2025.06.17 08:53 인기
  • 294
    1
저는 PHP에서 is_numeric 함수를 사용하여 숫자형 데이터를 확인하려고하는데, 다음과 같은 오류가 발생합니다.

- is_numeric 함수는 정수, 실수, 그리고 부동 소수점 숫자를 모두 숫자형으로 인식합니다.
- 하지만, 다음과 같은 경우는 어떻게 처리해야 할까요?

php

$test1 = "123"; // 정수형

$test2 = "123.45"; // 실수형

$test3 = "abc"; // 문자형

$test4 = "123.45e6"; // 부동 소수점 숫자



print(is_numeric($test1) ? "true" : "false"); 

print("n");

print(is_numeric($test2) ? "true" : "false");

print("n");

print(is_numeric($test3) ? "true" : "false");

print("n");

print(is_numeric($test4) ? "true" : "false");



- 위의 코드에서, $test4는 부동 소수점 숫자이지만, is_numeric 함수로는 숫자형으로 인식하지 못합니다.
- 어떻게 해야 $test4를 숫자형으로 인식할 수 있을까요?

    댓글목록

    profile_image
    나우호스팅  오래 전



    is_numeric 함수는 정수, 실수, 부동 소수점 숫자를 모두 숫자형으로 인식합니다. 하지만, 부동 소수점 숫자의 형태가 다르면 인식하지 못하는 문제가 있습니다.

    예를 들어, 부동 소수점 숫자는 10진수로 표현할 수 있는 숫자를 2의 보수 형태로 표현한 것입니다. 따라서, 부동 소수점 숫자의 형태가 다르면 is_numeric 함수로는 인식하지 못합니다.

    $test4 = "123.45e6"와 같이 e 또는 E를 포함한 부동 소수점 숫자는 is_numeric 함수로는 인식하지 못합니다.

    이러한 문제를 해결하기 위해서는 is_numeric 함수 대신에 ctype_digit 함수를 사용할 수 있습니다.

    ctype_digit 함수는 문자열이 숫자로만 구성되어 있는지 확인하는 함수입니다. 따라서, $test4 = "123.45e6"와 같이 e 또는 E를 포함한 부동 소수점 숫자는 ctype_digit 함수로는 인식하지 못합니다.

    또한, PHP 7.2 이상부터는 is_numeric_string 함수가 추가되었습니다. 이 함수는 is_numeric 함수와 ctype_digit 함수의 기능을 모두 제공하며, 부동 소수점 숫자의 형태가 다르더라도 인식할 수 있습니다.

    따라서, $test4 = "123.45e6"와 같이 e 또는 E를 포함한 부동 소수점 숫자를 숫자형으로 인식하기 위해서는 is_numeric_string 함수를 사용하는 것을 권장합니다.

    2025-06-17 08:54

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,646건 / 56 페이지

검색

게시물 검색