Entiers

Un entier est un nombre de l ' ensemble des entiers naturels Z : Z = { .... , -2 , -1 , 0 , 1 , 2 , .. . } . Il est possible de spécifier les nombres entiers ( integers ) de toutes les manières suivantes : décimale (base 10) , hexadécimale (base 16) , octale (base 8 ) éventuellement précédé du signe moins ( - ) .

Pour utiliser la notation octale , vous devez préfixer le nombre avec un zéro ; pour utiliser la notation hexadécimale , vous devez préfixer le nombre avec 0x .

 
?php

 
$a

 
=

 
1234

 
;

 
#

 
nombre

 
entier

 
en

 
base

 
10

 
$a

 
=

 
-123

 
;

 
#

 
nombre

 
entier

 
négatif

 
$a

 
=

 
0123

 
;

 
#

 
nombre

 
entier

 
en

 
base

 
8

 
,

 
octale

 
(équivalent

 
à

 
83

 
en

 
base

 
10

 
)

 
$a

 
=

 
0x12

 
;

 
#

 
nombre

 
entier

 
en

 
base

 
16

 
,

 
hexadécimale

 
#

 
(équivalent

 
à

 
18

 
en

 
base

 
10

 
)

 
?



La taille des entiers dépend de la plate-forme de support, mais la valeur maximale est généralement de 2 milliards et des poussières (c'est un entier signé de 32 bits). PHP ne supporte pas les entiers non signés.

Note : En PHP , il n ' existe pas de type fraction . 1 / 2 se transforme en nombre à virgule flottante 0.5 .

Dépassement de capacité des entiers

Si un nombre est hors de l ' intervalle de validité des entiers , il sera interprété comme un float .

 
?php

 
$large_number

 
=

 
2147483647

 
;

 
var_dump($large_number)

 
;

 
/

 
/

 
affiche

 
:

 
int(2147483647

 
)

 
var_dump

 
(

 
0x80000000

 
)

 
;

 
/

 
/

 
affiche

 
:

 
float(2147483648

 
)

 
var_dump

 
(

 
25

 
/

 
7

 
)

 
;

 
/

 
/

 
affiche

 
:

 
float(3.5714285714286

 
)

 
?



De même, si une fonction ou un opérateur retourne un entier qui est hors des limites de validité des entiers, il sera aussi automatiquement converti en float .
 
?php

 
$million

 
=

 
1000000

 
;

 
$large_number

 
=

 
50000

 
*

 
$million

 
;

 
var_dump($large_number)

 
;

 
/

 
/

 
affiche

 
:

 
float(50000000000

 
)

 
?





En PHP , il n ' y a pas de division entière . 1 / 2 sera un nombre 1agrave ; virgule flottante ( float ) de valeur 0.5 .

Avertissement

Malheureusement , il y a un bug dans le moteur ( corrigé en 4.1.0 ) , qui fait que PHP que fonctionne pas toujours bien lorsque des nombres négatifs sont utilisés . Lorsque les deux opérandes sont positifs , il n ' y a pas de problèmes . Par exemple : -50000 * $million , conduit à -429496728 .

Conversion en entiers

Pour explicitement convertir une valeur en integer , utilisez les opérateurs de transtypage ( int ) ou (integer ) . Cependant , dans la plupart des situations , vous n ' en aurez pas besoin , car une valeur sera automatiquement convertie si un opérateur , un fonction ou tout autre élément du langage requiert un entier .

Reportez-vous à la section définition de type pour plus d ' informations sur les conversions .

Depuis un booléen

FALSE devient 0 ( zéro) , et TRUE devient 1 (un ) .

Depuis un nombre à virgule flottante

Lors de conversion entre nombre à virgule flottante et un entier , le nombre sera arrondi à la valeur inférieure s' il est positif , et supérieure s'il est négatif (conversion dite 'vers zéro' ) .

Si le nombre est hors de l' intervalle de validité des entiers , (généralement + / - 2.15e+9 = 2^31 ) , le résultat est indéfinit , car les nombres à virgule flottante n 'ont pas assez de précision pour fournir une valeur exacte pour un entier .

Avertissement

Aucune alerte , même pas le plus petit message ne sera affiché dans ce cas .



Avertissement

Ne transformez jamais une fraction inconnue en entier , car cela peut conduire à des résultats irrationnels .

 
?php

 
echo

 
(

 
int

 
)

 
(

 
(0.1+0.7

 
)

 
*

 
10

 
)

 
;

 
/

 
/

 
affiche

 
7

 
!

 
?



Pour plus d'informations, reportez-vous aux alertes liées aux nombres à virgule flottante.

From strings

Reportez-vous à la section des conversions de chaînes .

Conversion d'autres types

La conversion d ' autres types en entier est indéfinie . Actuellement , PHP convertit d ' abord la valeur en booléen .

Attention

Mais , ne vous fiez pas à ce comportement , car il est susceptible de changer sans préavis !



Voir aussi : Nombres de grande taille et Nombres à virgules flottantes .