Home > developpement > PHP et le calcul du modulo négatif

PHP et le calcul du modulo négatif

juin 23rd, 2010

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 :

function modulo($a, $b) {
return $a - $b * floor($a/$b);
}

Grâce à cela, plus de problème de résultat incohérent ;)

VN:F [1.0.8_357]
Rating: 2.7/5 (3 votes cast)
Partager et découvrir : Ces icônes sont des liens vers des sites de partage de signet sociaux où les lecteurs peuvent partager et découvrir de nouveaux liens.
  • Digg
  • del.icio.us
  • StumbleUpon
  • Reddit
  • Webnews
  • MisterWong
  • Y!GG
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • MySpace
  • Technorati
  • Wikio

developpement

  1. No comments yet.
  1. No trackbacks yet.