讓我們假設我有一個有12個號碼的賬單號碼:823 45678912C#如何計算出賬單數量爲12的前10位數字?
我的問題是我如何精確計算前10個數字?
,以驗證是否在billnumber定是正確的,我必須執行以下計算:
(first 10 numbers) % 97 = result
而如果計算的結果是一樣的,最後2號我單號,那麼它被驗證。
在此先感謝。
讓我們假設我有一個有12個號碼的賬單號碼:823 45678912C#如何計算出賬單數量爲12的前10位數字?
我的問題是我如何精確計算前10個數字?
,以驗證是否在billnumber定是正確的,我必須執行以下計算:
(first 10 numbers) % 97 = result
而如果計算的結果是一樣的,最後2號我單號,那麼它被驗證。
在此先感謝。
(n/100) % 97 == n % 100
如果你的賬單號碼存儲在long
變量,卻將它右邊的兩個地方,有你有它:
var first10Digits = billNumber/100;
var checksum = first10Digits % 97;
它看起來就像你有一個單號,實際上是用字符串空間。我會使用@ Marcelo的解決方案,但首先您需要將其轉換爲長整數。這應該有所幫助。
var billAsNumber = long.Parse(billNumber.Replace(" ",""));
var valid = (billAsNumber/100) % 97 == billAsNumber % 100;
+1填寫我的答案。 – 2010-03-31 21:38:58
請注意,您的帳單編號可能超過12位數字,並且生成的整數不適合現有數據類型。在搜索關於如何對大量數字進行MOD 97劃分的解決方案時,我發現this算法對我來說效果很好。
「n」必須*長*才能完成此項工作。 – 2010-03-31 12:25:26