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)
$large_number = 2147483648;
var_dump($large_number);
// affiche : float(2147483648)
?>
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)
?>
Malheureusement, il y a un bug dans le moteur (toujours présent en
4.0.6 et probablement résolu en 4.0.7) ce 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.