2012-11-22 16 views
5

के साथ पूर्णांक कुछ बैंक खाता संख्याओं की जांच करने के लिए मैं खाता संख्या पर एक मॉड्यूल 97 करना चाहता हूं। लेकिन UInt64 में प्रवेश करने के लिए बहुत से खाता संख्या बड़ी है।24 अंकों

मैं 24 अंकों पूर्णांक पर एक opperation कैसे कर सकता हूँ?

धन्यवाद,

नमूना कोड (यह परिवर्तित नहीं कर सकते):

(Convert.ToUInt64("756842356987456214536254") % 97 == 1); 
+1

एक ओर ध्यान दें: यह शायद बुरा है बैंक खाता संख्या को संख्या के रूप में स्टोर करने का विचार ... यह वास्तव में गणितीय संख्या नहीं है, यह कार रजिस्टर प्लेट आईडी की तरह है। कम से कम दुनिया के कुछ स्थानों में, बैंक खाते में पत्र हो सकते हैं, और/या बीच में डैश और/या हटाने योग्य शून्य हो सकते हैं (जैसे 11-22 000011-0000000022 के समान है)। – hyde

+3

मुझे इसे एक संख्या के रूप में उपयोग करना है। क्योंकि बैंक खाते की वैधता की जांच करने के लिए आईबीएएन मानक। ऐसा करने के लिए, हमें खाता संख्या के अक्षरों को बदलना होगा और फिर गणितीय opperation प्रदर्शन करना होगा। देखें: # http://en.wikipedia.org/wiki/International_Bank_Account_Number Validating_the_IBAN –

+0

आह, यह जानने के लिए अच्छी बात है। – hyde

उत्तर

9

एक तरह से उपयोग करने के लिए System.Numeric के BigInteger होगा:

BigInteger bi = BigInteger.Parse("756842356987456214536254"); 
1

धन्यवाद,

यह काम है।

Org.BouncyCastle.Math.BigInteger bi = new BigInteger("756842356987456214536254"); 

(Convert.ToInt32(bi.Mod(new BigInteger("97")).ToString()) == 1); 
+0

आप इसे BigInt के साथ नहीं देखते हैं? मेरे लिए इंपॉम्पाइल। मैं Org.BouncyCastle.Math.BigInteger –

+1

का उपयोग करता हूं, आपको एक नया उत्तर पोस्ट करके किसी पोस्ट पर टिप्पणी नहीं करनी चाहिए। कृपया प्रासंगिक पोस्ट पर एक टिप्पणी जोड़ें। उत्तर कालक्रम से प्रदर्शित नहीं होते हैं, इसलिए यह स्पष्ट है कि आप किस जवाब का जवाब दे रहे हैं। – Tormod

0

यदि संख्याओं में 28 अंक हैं, तो आप decimal का भी उपयोग कर सकते हैं। BigInteger से अधिक उपयोग करना अधिक सुविधाजनक हो सकता है।

+0

हां, लेकिन कुछ खाता संख्याओं में 28 से अधिक अंक हैं। इसलिए, मैं BigInteger का उपयोग करूंगा क्योंकि इसमें अधिकतम 38 अंक हो सकते हैं। –

0

इनपुट पाठ यह स्ट्रिंग लेने के लिए और तो आप एक बाइट सरणी इस उदाहरण की तरह BigInteger constructor को पारित किया जा सकता है कि मिल Encoding.GetBytes method उपयोग करने के लिए आसान हो सकता है, तो:

var enc = new System.Text.UTF8Encoding(); 
var bi = new BigInteger(enc.GetBytes("756842356987456214536254")); 
var result = (bi % 97).ToString(); 
+0

यह मुझे कोई समझ नहीं आता है: 'BigInteger (बाइट [])' बाइनरी प्रतिनिधित्व में एक संख्या की उम्मीद कर रहा है, यूटीएफ -8 अक्षरों की एक सरणी नहीं! –