2009-03-22 26 views

Respuesta

77

Desde el PHP manual:

El tamaño de un entero es dependiente de la plataforma, aunque un valor máximo de aproximadamente dos mil millones es el valor usual (que es de 32 bits con signo). PHP no admite enteros sin signo. El tamaño entero puede ser determinado usando la constante PHP_INT_SIZE, y el valor máximo usando la constante PHP_INT_MAX desde PHP 4.4.0 y PHP 5.0.5.

Las plataformas de 64 bits generalmente tienen un valor máximo de aproximadamente 9E18, excepto en Windows antes de PHP 7, donde siempre era de 32 bits.

+10

Bueno, en amd64 linux, que es bastante común hoy en día, es 9223372036854775807 (2^63-1) – derobert

+4

Eso es un montón de dígitos: hay la primera razón por la que se me ocurre elegir AMD sobre Intel al comprar un servidor dedicado. :) – karim79

+29

@ karim79, creo que es debido a que el arco es de 64 bits, no es AMD. =] – strager

4

Ah I encontró: 2 - 1 (2147483647)

http://au2.php.net/int

Desbordamiento de enteros

Si PHP se encuentra con un número más allá de los límites del tipo entero, se interpretará como un flotador en su lugar. Además, una operación que da como resultado un número más allá de los límites del tipo entero devolverá una flotación en su lugar.

<?php 
$large_number = 2147483647; 
var_dump($large_number); 
// output: int(2147483647) 

$large_number = 2147483648; 
var_dump($large_number); 
// output: float(2147483648) 
+7

Esto es lo que sería en una plataforma de 32 bits. Considere también que muchas personas ejecutan servidores en una plataforma de 64 bits. – thomasrutter

17

El tamaño de enteros PHP es platform dependent:

El tamaño de un entero es dependiente de la plataforma, aunque un valor máximo de aproximadamente dos mil millones es el valor usual (que es 32 bits firmados). PHP no admite enteros sin signo. El tamaño entero puede ser determinado usando la constante PHP_INT_SIZE, y el valor máximo usando la constante PHP_INT_MAX desde PHP 4.4.0 y PHP 5.0.5.

PHP 6 agrega "longs" (64 bit ints).

+2

no obtengo estos votos negativos ... esta es una respuesta perfectamente buena, incluso con algo de información adicional. +1 para corregirlo. – nickf

+1

Esta respuesta originalmente decía "plataforma * en * dependiente" (no dependiente). También (aún) afirma que las entradas de 64 bits no existían antes de PHP 6. Esto es falso. – thomasrutter

2

Depende de su sistema operativo, pero 2147483647 es el valor habitual, de acuerdo con manual.

+6

Específicamente, depende de si se está ejecutando en una plataforma de 32 bits o de 64 bits. 32 bits es solo "habitual" en un mundo donde la mayoría de las personas ejecuta servidores de 32 bits. Cada vez más, este no es el caso. – thomasrutter

60

32-bit construye de PHP:

  • Los enteros pueden ser de -2147483648 a (~ y plusmn; 2 mil millones)

64-bit construcciones de PHP:

  • Los enteros pueden ser de -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 (~ y plusmn; 9 trillones)

Los números son inclusivos.

Nota: Algunos de 64 bits construye una vez utilizado enteros de 32 bits, en particular mayor de Windows construye de PHP

Los valores fuera de estos rangos son representados por los valores de punto flotante, como son valores no enteros dentro de estos rangos. El intérprete determinará automáticamente cuándo debe pasar este cambio a coma flotante en función de si el valor de resultado de un cálculo no se puede representar como un número entero.

PHP no tiene soporte para enteros "sin signo" como tales, limitando el valor máximo de todos los enteros al rango de un entero "firmado".

15

(un poco tarde, pero podría ser útil)

sólo confianza PHP_INT_MAX and PHP_INT_SIZE, este valor varía en su arco (32/64 bits) y su sistema operativo ...

Cualquier otro "adivinar" o "sugerencia" puede ser falso.

Cuestiones relacionadas