2499999999 % 2 renvoie -1 pourquoi ?

insecticide
Invité n'ayant pas de compte PHPfrance

27 févr. 2009, 21:52

Bonjour à toute la communauté. J'essaye de réaliser un petit script en php. J'ai un petit soucis. php me renvoie -1 lorsque j'effectue 2499999999 % 2 est-ce que quelqu'un saurait pourquoi ? Merci d'avance.

ViPHP
ViPHP | 3607 Messages

28 févr. 2009, 01:36

Peut-être que les nombres présents sont un peu trop grand pour php?
Si c'est le problème tu peux tester http://fr.php.net/manual/fr/intro.bc.php qui permet de manipuler des très grands nombres avec plus de précision...

ViPHP
ViPHP | 1136 Messages

28 févr. 2009, 09:18

hi ,

La taille maximale de l'entier doit effectivement être atteint .

Pour une plateforme 32bits , celà correspond à 2147483647

Chez moi , ton opération donne bien 1 , mais je suis sur une plateforme 64bits avec la dernière version de php ( 5.2.9 ).

Ce qui m'etonne quand même , c'est que la documentation sur le modulo dit celà :
Note: Souvenez-vous que $a % $b est négatif si $a est négatif.
Pourtant si un entier dépasse , l'entier devient un float , et non négatif ... :roll:

Que te donne les constantes suivante :
echo PHP_INT_MAX;
echo '<br>';
echo PHP_INT_SIZE;
A suivre donc ...