我似乎无法弄清楚我的校验位代码有什么问题!
有时,它产生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
进行检查答案 0 :(得分:2)
这一行是问题所在:
CheckSumNumber = (((sum / 10) + 1) * 10) - sum;
当sum
已经是10的倍数时,这将生成10个。基本上你只是想要整理。这是一种简单的方法:
CheckSumNumber = (((sum + 9) / 10) * 10) - sum;