mod10アルゴリズムのLINQ実装を作成しました。
ソースコード:
string number = "7992739871";
int mod10sum = number.Reverse()
.Select((c, i) => (c - '0') << ((i + 1) & 1)) // Double every other digit and sum the digits of the products (e.g., 10: 1 + 0 = 1, 14: 1 + 4 = 5)
.Sum(c => c - '0') % 10; // together with the undoubled digits from the original number
string checkDigit = (mod10sum == 0 ? 0 : 10 - mod10sum).ToString("0");
Console.WriteLine(checkDigit);
例のように、7992739871
数値にはチェックディジットが3
;として含まれている必要があります。しかし、私が得ているのは15
です。
私が間違っていることは何ですか?間違いは非常に小さいと思いますが、見つけることができません。