2010-06-26 5 views
-1

Я не могу понять, что не так с кодом моей контрольной цифры!Luhn check digit

Время от времени, она производит 2 проверка длины цифр значения

Пример

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

Все сгенерированные числа являются действительными, оно может быть проверено на http://www.ee.unb.ca/cgi-bin/tervo/luhn.pl?N=127753224800013

КОД: http://dl.dropbox.com/u/678582/Email/GenerateAN.txt

+2

Ваша кодовая ссылка идет на 404. Является ли этот код слишком длинным для публикации здесь? –

+2

Без кода этот вопрос необходимо удалить. – Noah

+0

ГДЕ РАБОЧИЙ КОД! –

ответ

2

Этом line проблема:

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

Это будет генерировать 10, когда sum уже многократный 10. В основном вы просто пытаетесь округлить. Вот простой способ сделать это:

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

Просто избили меня! – Oded