PHP et le calcul du modulo négatif
Je viens de tomber sur le cas ce matin, l’opérateur PHP modulo (%) pour des valeurs trop grandes perd complètement les pédales pour donner des résultats totalement incohérents.
A cause d’un dépassement de capacité, le calcul du modulo peut donner des résultats négatifs avec deux opérandes positives ce qui est mathématiquement impossible (il est possible d’avoir un résultat négatif si un des deux opérande est négatif).
Essayez par exemple de calculer 3002223337 % 23 en PHP vous obtiendrez -2 (testé en PHP 5.3.2 sous Windows et Linux).
Heureusement, la formule de calcul du modulo n’est pas très compliquée et comble du luxe Wikipédia nous fourni un exemple d’implémentation de l’opération que votre serviteur vous a traduit en PHP :
return $a - $b * floor($a/$b);
}
Grâce à cela, plus de problème de résultat incohérent













