2010-06-26 3 views
-1

Je ne peux pas l'air de comprendre ce qui ne va pas avec mon chèque code à trois chiffres!Luhn chiffre de contrôle

Parfois, il produit deux chiffres de contrôle de longueur des valeurs

Exemple

1277531815000110 <-- check digit is double value?????? 
1277532495000110 <-- check digit is double value??????? 
1277534649000110 <-- check digit is double value??????? 
127753185300011 <-- good! 
127753208500019 <-- good! 

Tous les nombres générés sont valides, il est possible de contrôler http://www.ee.unb.ca/cgi-bin/tervo/luhn.pl?N=127753224800013

CODE: http://dl.dropbox.com/u/678582/Email/GenerateAN.txt

+2

Votre code de liaison va à un 404. Le code est trop long pour poster ici? –

+2

Sans le code, cette question devrait être supprimée. – Noah

+0

O WH EST LE CODE DE TRAVAIL! –

Répondre

2

Cette ligne est le problème:

CheckSumNumber = (((sum/10) + 1) * 10) - sum; 

Cela va générer 10 quand sum est déjà un multiple de 10. Fondamentalement, vous êtes juste essayer d'arrondir. Voici un moyen facile de le faire:

CheckSumNumber = (((sum + 9)/10) * 10) - sum; 
+0

Juste me battre à elle! – Oded

Questions connexes