정수는 ℤ = {..., -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]+
2진수 : 0b[ 01 ]+
정수: [+-]?16진수
| [+-]?8진수
| 🎜>정수의 단어 크기는 플랫폼에 따라 다르지만 일반적인 최대값은 약 20억(32비트 부호 있음)입니다. 64비트 플랫폼의 최대값은 일반적으로 약 9E18입니다. PHP는 부호 없는 정수를 지원하지 않습니다. 정수값의 단어 길이는 PHP_INT_SIZE 상수로 표현할 수 있습니다. PHP 4.4.0, PHP 5.0.5부터 최대값은 PHP_INT_MAX 상수로 표현할 수 있습니다.
정수 오버플로
<?php var_dump(01090); // 八进制 010 = 十进制 8 ?>
예시#4 64비트 시스템에서 정수 오버플로
<?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) ?>
정수 나누기 연산이 없습니다. PHP 기호로. 1/2는 float 0.5를 생성합니다. 값을 정수로 변환하거나 소수 부분을 버리거나 더 나은 반올림을 위해 round() 함수를 사용할 수 있습니다.
<?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 var_dump(25/7); // float(3.5714285714286) var_dump((int) (25/7)); // int(3) var_dump(round(25/7)); // float(4) ?>
부동 소수점 정밀도에 대한 경고를 참조하세요.
<?php echo (int) ( (0.1+0.7) * 10 ); // 显示 7! ?>