Supprimer un message
Raison de suppression du message (envoyée à l'utilisateur)

Voulez vous réellement supprimer ce message?  


philfr


Voilà philfr, édité ... t'es content :crazy: :whistle:


Passer par des floats pour faire des calculs entiers c'est :vomi:
D'ailleurs tu risques toujours des erreurs d'arrondi.

Même pour les entiers normaux, il y a un opérateur modulo. Tu peux donc remplacer ton code
$control = $base - floor($base / 97) * 97;

par
$control = $base % 97


Et avec un minimum de mathématiques, tu n'as besoin de rien de plus que les entiers 32 bits:

soit le compte aaa-bbbbbbb-XX. La valeur aaabbbbbbb peut d'écrire aaa * 10000000 + bbbbbbb.
Il suffit donc de calculer 10000000%97 = 76 et de faire le calcul

(76*aaa+bbbbbbb)%97 qui passera toujours en 32 bits...

Un exemple ?

123-4567890-XX

76*123+4567890=4577238

4577238 % 97 = 2

Or 1234567890 % 97 = 2

CQFD.
Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?