-1

チェックディジットコードの何が問題なのか理解できないようです。

時々、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

4

1 に答える 1

2

この行が問題です:

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

がすでに10の倍数である場合、10が生成されsumます。基本的には、切り上げようとしているだけです。これを行う簡単な方法は次のとおりです。

CheckSumNumber = (((sum + 9) / 10) * 10) - sum;
于 2010-06-26T06:42:13.560 に答える