2010-06-26 92 views
-1

我似乎无法弄清楚我的支票号码有什么问题!Luhn支票号码

有时,它产生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

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

+2

您的代码链接将转到404。代码是否太长而无法在此处发布? – 2010-09-14 19:52:29

+2

没有代码,应该删除这个问题。 – Noah 2011-08-15 19:47:39

+0

工作代码在哪里! – 2012-09-12 23:16:33

回答

2

这线的问题:

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

sum已经是10的倍数时,会生成10个数字。基本上,你只是试图取整。这是一个简单的方法:

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

只要打败我吧! – Oded 2010-06-26 06:44:12