4.2.3 Entiers
4.2 Les types
4 Référence du langage
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
.
De même, si vous effectuez une opération qui retourne un nombre
hors de l'intervalle de validité des entiers, un
float
sera retourné.
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)
// cette méthode ne convient pas pour les entiers hexadécimaux : var_dump(
Notice: Hex number is too big: 0x100000000 in /Volumes/ibook/phpdoc-fr/html.inc on line 749
0x100000000 ); // affiche : int(2147483647)
$million = 1000000; $large_number = 50000 * $million; var_dump($large_number); // affiche : float(50000000000) ?>
|
Attention |
Malheureusement, il y a un bogue 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
. Cependant, lorsque les deux opérateurs
sont positifs, il n'y a aucun problème.
Ceci a été résolu en PHP 4.1.0.
|
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
la fonction
round
.
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) ?>
|
|