Booleanos
Números de punto flotante
Tipos
PHP Manual

## Enteros

Un integer es un número del conjunto Z = {..., -2, -1, 0, 1, 2, ...}.

Vea también:

- Entero de longitud arbitraria / GMP
- Números de punto flotante
- Precisión arbitraria / BCMath

### Sintaxis

Los enteros pueden ser especificados en notación decimal (base 10), hexadecimal (base 16) u octal (base 8), opcionalmente precedidos por un signo (- o +).

Para usar la notación octal, debe preceder el número con un 0 (cero). Para usar la notación hexadecimal, preceda el número con 0x.

Example #1 Literales tipo entero

`<?php
$a = 1234; // número decimal
$a = -123; // un número negativo
$a = 0123; // número octal (equivalente al 83 decimal)
$a = 0x1A; // número hexadecimal (equivalente al 26 decimal)
?>`

Formalmente, la posible estructura para literales integer es:

    decimal     : [1-9][0-9]*
                | 0

    hexadecimal : 0[xX][0-9a-fA-F]+

    octal       : 0[0-7]+

    integer     : [+-]?decimal
                | [+-]?hexadecimal
                | [+-]?octal

El tamaño de un integer depende de la plataforma, aunque un valor máximo de aproximadamente dos billones es el valor usual (lo que es un valor de 32 bits con signo). PHP no soporta enteros sin signo. El tamaño de un entero puede determinarse usando la constante `PHP_INT_SIZE`, y el valor máximo usando la constante `PHP_INT_MAX` a partir de PHP 4.4.0 y PHP 5.0.5.

Warning

Si un dígito inválido es pasado a un integer octal (p.ej. 8 o 9), el resto del número es ignorado.

Example #2 Curiosidad de valores octales

`<?php
var_dump(01090); // 010 octal = 8 decimal
?>`

### Desbordamiento de enteros

Si PHP encuentra un número más allá de los límites del tipo integer, será interpretado en su lugar como un float. Asimismo, si realiza una operación que resulta en un número más allá de los límites del tipo integer, un float es retornado en su lugar.

`<?php
$numero_grande = 2147483647;
var_dump($numero_grande);
// salida: int(2147483647)
$numero_grande = 2147483648;
var_dump($numero_grande);
// salida: float(2147483648)
// también es cierto para enteros hexadecimales especificados entre 2^31 y 2^32-1:
var_dump( 0xffffffff );
// salida: float(4294967295)
// esto no ocurre con los enteros indicados como hexadecimales más allá de 2^32-1:
var_dump( 0x100000000 );
// salida: int(2147483647)
$millon = 1000000;
$numero_grande = 50000 * $millon;
var_dump($numero_grande);
// salida: float(50000000000)
?>`
Warning

Desafortunadamente, había un fallo en PHP que provocaba que esto no siempre funcionara correctamente cuando se presentaban números negativos. Por ejemplo, el resultado de -50000 * $millon es -429496728. Sin embargo, cuando ambos operandos eran positivos no había ningún problema.

Este problema fue resuelto en PHP 4.1.0.

No hay un operador de división de enteros en PHP. 1/2 produce el float 0.5. Puede moldear el valor a un integer para redondearlo hacia abajo, o la función round() ofrece mayor control sobre la operación de redondeo.

`<?php
var_dump(25/7); // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7)); // float(4)
?>`

### Conversión a entero

Para convertir explícitamente un valor a integer, use alguno de los moldeamientos (int) o (integer). Sin embargo, en la mayoría de casos no necesita usar el moldeamiento, ya que un valor será convertido automáticamente si un operador, función o estructura de control requiere un argumento tipo integer. También puede convertir un valor a entero con la función intval().

Vea también Manipulación de Tipos.

#### Desde booleanos

`FALSE` producirá 0 (cero), y `TRUE` producirá 1 (uno).

#### Desde números de punto flotante

Cuando se realizan conversiones desde float a integer, el número será redondeado hacia cero.

Si el flotante se encuentra más allá de los límites del entero (usualmente +/- 2.15e+9 = 2^31), el resultado es indefinido, ya que el flotante no tiene suficiente precisión para dar un resultado entero exacto. No se producirá una advertencia, ¡ni siquiera una noticia en este caso!

Warning

Nunca moldee una fracción desconocida a integer, ya que esto en ocasiones produce resultados inesperados.

`<?php
echo (int) ( (0.1+0.7) * 10 ); // ¡imprime 7!
?>`

Para más información, consulte la advertencia sobre precisión-flotante.

#### Desde cadenas

Vea Conversión de cadenas a números

#### Desde otros tipos

Caution

El comportamiento de convertir desde entero no es definido para otros tipos. No confíe en cualquier comportamiento observado, ya que puede ser modificado sin aviso.

Booleanos
Números de punto flotante
Tipos
PHP Manual