>  기사  >  백엔드 개발  >  PHP 데이터 유형 정수 구문 분석(정수)

PHP 데이터 유형 정수 구문 분석(정수)

怪我咯
怪我咯원래의
2017-04-05 10:39:531882검색

정수는 집합 ℤ = {..., -2, -1, 0, 1, 2, ...}의 숫자입니다.

구문

정수 값은 10진수, 16진수, 8진수 또는 2진수로 표시할 수 있으며 앞에 선택적 기호(- 또는 +)를 붙일 수 있습니다.

PHP 5.4.0부터 사용할 수 있는 이진 표현 정수입니다.

8진수 표현을 사용하려면 숫자 앞에 0이 와야 합니다. 16진수 표현을 사용하려면 숫자 앞에 0x가 와야 합니다. 이진 표현을 사용하려면 숫자 앞에 0b가 와야 합니다.

예제 #1 정수텍스트 표현

<?php
$a = 1234; // 十进制数
$a = -123; // 负数
$a = 0123; // 八进制数 (等于十进制 83)
$a = 0x1A; // 十六进制数 (等于十进制 26)
?>

정수의 공식적인 설명은 다음과 같습니다.

십진수 : [1-9][0-9 ] *
| 0

16진수 : 0[xX][0-9a-fA-F]+

8진수 : 0[0-7]+

: 0b[01]+

정수 : [+-]?16진수
| [+-]?8진수
|

정수의 단어 크기는 플랫폼에 따라 다르지만 일반적인 최대값은 약 20억(32비트 부호 있음)입니다. 64비트 플랫폼의 최대값은 일반적으로 약 9E18입니다. PHP는 부호 없는 정수를 지원하지 않습니다. 정수 값의 단어 길이는

상수 PHP_INT_SIZE로 표현할 수 있습니다. PHP 4.4.0 및 PHP 5.0.5부터 최대값은 PHP_INT_MAX 상수로 표현할 수 있습니다.

경고

8진수(예: 8 또는 9)에 잘못된 숫자가 전달되면 나머지 숫자는 무시됩니다.

예제 #2 8진수의 이상한 점

<?php
var_dump(01090); // 八进制 010 = 十进制 8
?>

정수 오버플로

주어진 숫자가 정수 범위를 초과하면

float. 마찬가지로 연산 결과가 정수 범위를 초과하는 경우에도 float가 반환됩니다. 예제 #3 32비트 시스템에서 정수 오버플로

<?php
$large_number = 2147483647;
var_dump($large_number);                     // int(2147483647)
 
$large_number = 2147483648;
var_dump($large_number);                     // float(2147483648)
 
$million = 1000000;
$large_number =  50000 * $million;
var_dump($large_number);                     // float(50000000000)
?>

예제 #4 64비트 시스템에서 정수 오버플로

<?php
$large_number = 9223372036854775807;
var_dump($large_number);                     // int(9223372036854775807)
 
$large_number = 9223372036854775808;
var_dump($large_number);                     // float(9.2233720368548E+18)
$million = 1000000;
$large_number =  50000000000000 * $million;
var_dump($large_number);                     // float(5.0E+19)
?>

정수 나누기에

연산자가 없습니다. PHP

. 1/2는 float 0.5를 생성합니다. 값을 소수 부분 없이 정수로 캐스팅하거나 더 나은 반올림을 위해 round() 함수 를 사용할 수 있습니다.

<?php
var_dump(25/7);         // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7));  // float(4)
?>
정수로 변환

값을 명시적으로 정수로 변환하려면 (int) 또는 (integer) 캐스트를 사용하세요. 그러나 대부분의 경우에는 캐스팅이 필요하지 않습니다. 연산자, 함수 또는

흐름 제어

에 정수 매개변수가 필요한 경우 값이 자동으로 변환되기 때문입니다. intval() 함수를 사용하여 값을 정수 유형으로 변환할 수도 있습니다.

참조: 유형 변환 차별

.

부울 값에서 변환하면

FALSE는 0(영)을 생성하고 TRUE는 1(1)을 생성합니다.

부동소수

부동소수점 수를 정수로 변환할 때는 반내림됩니다.

부동 소수점 수가 정수 범위를 초과하는 경우(보통 32비트 플랫폼에서는 +/- 2.15e+9 = 2^31, 64비트 플랫폼에서는 +/- 9.22e+18 = 2^63) ) 정확한 정수 결과를 제공하기에는 정밀도가 부족하므로 결과가 정의되지 않습니다. 이 경우 경고나 알림도 없습니다!

경고

알 수 없는 분수를 정수로 변환하지 마세요. 때로는 예측할 수 없는 결과가 발생할 수 있습니다.

<?php
echo (int) ( (0.1+0.7) * 10 ); // 显示 7!
?>

에는 다른 유형을 정수로 변환하기 위한 정의된 동작이 없습니다. 예고 없이 변경될 수 있으므로 기존 동작에 의존하지 마십시오.

위 내용은 PHP 데이터 유형 정수 구문 분석(정수)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.