2010-03-31 23 views
1

讓我們假設我有一個有12個號碼的賬單號碼:823 45678912C#如何計算出賬單數量爲12的前10位數字?

我的問題是我如何精確計算前10個數字?

,以驗證是否在billnumber定是正確的,我必須執行以下計算:

(first 10 numbers) % 97 = result 

而如果計算的結果是一樣的,最後2號我單號,那麼它被驗證。

在此先感謝。

回答

9
(n/100) % 97 == n % 100 
+0

「n」必須*長*才能完成此項工作。 – 2010-03-31 12:25:26

2

如果你的賬單號碼存儲在long變量,卻將它右邊的兩個地方,有你有它:

var first10Digits = billNumber/100; 
var checksum = first10Digits % 97; 
4

它看起來就像你有一個單號,實際上是用字符串空間。我會使用@ Marcelo的解決方案,但首先您需要將其轉換爲長整數。這應該有所幫助。

var billAsNumber = long.Parse(billNumber.Replace(" ","")); 
var valid = (billAsNumber/100) % 97 == billAsNumber % 100; 
+0

+1填寫我的答案。 – 2010-03-31 21:38:58

0

請注意,您的帳單編號可能超過12位數字,並且生成的整數不適合現有數據類型。在搜索關於如何對大量數字進行MOD 97劃分的解決方案時,我發現this算法對我來說效果很好。