4.2.3 Entiers
4.2 Les types
4 Référence
Manuel PHP
. Syntaxe ->Dépassement de capacité des entiers . Conversion en entiers
|
4.2.3.2 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
.
Dépassement de capacité des entiers |
<?php $large_number = 2147483647; var_dump($large_number); // affiche : int(2147483647)
$large_number = 2147483648; var_dump($large_number); // affiche : float(2147483648)
// this goes also for hexadecimal specified integers: var_dump( 0x80000000 ); // affiche : float(2147483648)
$million = 1000000; $large_number = 50000 * $million; var_dump($large_number); // affiche : float(50000000000) ?>
|
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
.
En
PHP
, il n'y a pas de division entière.
1/2
sera un nombre à virgule flottante (
float
)
de valeur
0.5
.
Attention |
Malheureusement, il y a un bug dans le moteur (corrigé en 4.1.0),
qui fait que
PHP
ne 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
.
|
Il n'existe pas de division entière en
PHP
.
1/2
générera le
float
0.5
. Vous pouvez forcer la valeur
au format entier pour faire l'arrondi, ou bien utiliser
les fonctions
round
,
floor
ou
ceil
.
Divisions entières |
<?php var_dump(25/7); // float(3.5714285714286) var_dump((int) (25/7)); // int(3) var_dump(round(25/7)); // float(4) ?>
|
|