integer는 거대한 집합 Z = {..., -2, -1, 0, 1, 2, ...}이다.
Arbitrary length integer / GMP, 부동 소수점수, Arbitrary precision / BCMath를 참고
정수는 10진수(10-based), 16진수(16-based), 8진수(8-based) 표기법으로 표현 될수 있다. 선택적으로 부호 (- 나 +)를 사용할수 있다.
8진수 표기법을 사용하면, 0 (zero)를 숫자의 앞에 붙여야 하며, 16진수 표기하려면 0x을 숫자 앞에 붙이도록 한다.
정수타입의 범위를 넘는 수를 사용하려면 그 값은 대신 float타입으로 해석될 것이다. 또한, 결과값이 integer타입의 범위를 초과하게 되는 작업을 수행되면, 그 값은 대신 float으로 돌려줄것이다.
<?php |
주의 |
불운하게도, PHP는 버그로 인해 음수와 연계될때 정확하게 동작하지 않을수 있다. 예를 들면 -50000 * $million를 수행하면, 결과는 -429496728이 될것이다. 두 피연산자가 모두 양수이면 아무 문제가 없다. 이 문제는 PHP 4.1.0에서 해결되었다. |
PHP에는 정수 나누기 연산자가 없다. 1/2는 float 0.5가 된다. 반올림하기 위해 정수로 값을 캐스트하거나, round() 함수를 쓸수 있다.
명시적으로 integer로 변환하려면 (int)나 (integer) 캐스트를 사용한다. 하지만, 대부분의 경우 이런 캐스트를 사용할 필요가 없다. 왜냐하면 연산자 나 함수 또는 제어 구조가 integer 인수를 요구한다면 자동으로 변환되기 때문이다. 또한 intval()함수로 정수값으로 변환할수 있다.
See also type-juggling.
FALSE는 0 (zero), 그리고 TRUE는 1 (one).
float에서 integer로 변환할때, 그 수는 0으로 깍일것이다.
float이 integer범위를 초과하면 (주로 +/- 2.15e+9 = 2^31), 결과는 정의되지않는다. 왜냐하면 float은 정확한 정수값을 돌려주기에 충분한 정밀도를 갖지 않기 때문이다. 이 경우에는 warning이나 notice조차도 나타나지 않는다!
주의 |
알려지지 않은 소수를 integer로 캐스트하지 말것, 왜냐하면 이렇게 하는경우에 종종 기대하지 않는 결과를 유도할수 있기 때문이다. 자세한 정보는 부동-정밀도에 관한 경고를 참고. |
문자열을 숫자로 변환하기를 참고
경고 |
정수로의 변환은 다른 타입에 대해 정의되지 않는다. 현재까지는 값이 논리값으로 변환될때와 동일하게 동작한다. 하지만, 경고 없이 변할수 있기 때문에 이 동작에 연관짓지 말것 |