C#如何计算12个账单号码的前10个数字?

C#如何计算12个账单号码的前10个数字?,c#,C#,假设我有一个账单号码,有12个号码:82345678912 我的问题是,如何准确地计算前10个数字 为了验证给定的billnumber是否正确,我必须执行以下计算: (first 10 numbers) % 97 = result 如果计算结果与我的账单号的最后两个数字相同,那么它将被验证 提前感谢。如果您的账单号存储在长变量中,请将其向右移动两个位置,您就有了它: (n / 100) % 97 == n % 100 var first10Digits = billNumber / 100;

假设我有一个账单号码,有12个号码:82345678912

我的问题是,如何准确地计算前10个数字

为了验证给定的billnumber是否正确,我必须执行以下计算:

(first 10 numbers) % 97 = result
如果计算结果与我的账单号的最后两个数字相同,那么它将被验证


提前感谢。

如果您的账单号存储在
长变量中,请将其向右移动两个位置,您就有了它:

(n / 100) % 97 == n % 100
var first10Digits = billNumber / 100;
var checksum = first10Digits % 97;

如果您的票据编号存储在
long
变量中,请将其向右移动两个位置,这样您就有了它:

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

看起来您有一个账单编号,实际上是一个带空格的字符串。我会使用@Marcelo的解决方案,但首先需要将其转换为长整数。这应该会有帮助

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

看起来您有一个账单编号,实际上是一个带空格的字符串。我会使用@Marcelo的解决方案,但首先需要将其转换为长整数。这应该会有帮助

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

请注意,您的账单编号可能超过12位,并且生成的整数不适合现有的数据类型。在搜索如何对非常大的数字进行MOD 97除法的解决方案时,我发现算法对我来说非常有效。

请注意,您的账单编号可能超过12位,并且生成的整数不适合现有的数据类型。在寻找关于如何对非常大的数进行MOD 97除法的解决方案时,我发现这个算法对我来说非常有效