2009-08-19 16 views
13

से बड़ी संख्या के साथ कैसे निपटते हैं सी # में, कैसे एक संख्या को स्टोर और गणना कर सकते हैं जो UInt64 के अधिकतम मूल्य (18,446,744,073,709,551,615) से काफी अधिक है?आप यूआईएनटी 64 (सी #)

उत्तर

14

बिगइंटर वर्ग का उपयोग करके; जे # पुस्तकालयों में से एक है (निश्चित रूप से सी # से सुलभ), एफ # में एक और (इसे जांचने की आवश्यकता है), और फ्री सी # में such as this one फ्रीस्टैंडिंग कार्यान्वयन हैं।

+0

ध्यान देने योग्य भी - पाइथन और रूबी अनिश्चित सटीक पूर्णांक का समर्थन करने के लिए डीएलआर में अभी तक एक और कार्यान्वयन है, लेकिन मैंने यह देखने के लिए नहीं देखा है कि उस कक्षा में सार्वजनिक एपीआई क्या है। –

1

दशमलव की अधिक सीमा है।

.NET 4.0 में bigInteger के लिए समर्थन है लेकिन यह अभी भी बीटा से बाहर नहीं है।

16

क्या आप .NET 4.0 बीटा का उपयोग कर सकते हैं? यदि ऐसा है, तो आप BigInteger का उपयोग कर सकते हैं।

अन्यथा, यदि आप 28 अंकों के भीतर चिपके हुए हैं, तो आप decimal का उपयोग कर सकते हैं - लेकिन सावधान रहें कि स्पष्ट रूप से यह दशमलव अंकगणित करने जा रहा है, इसलिए आपको क्षतिपूर्ति के लिए विभिन्न स्थानों पर घूमने की आवश्यकता हो सकती है।

+0

अगर किसी को नामस्थान समस्या के साथ परेशानी है, तो यह System.Numerics के अंतर्गत है; – Adrian

1

बड़े पूर्णांक के साथ कंप्यूटिंग के लिए कई पुस्तकालय हैं, अधिकांश क्रिप्टोग्राफी पुस्तकालय भी इसके लिए एक कक्षा प्रदान करते हैं। एक मुफ्त पुस्तकालय के लिए this देखें।

0

आप decimal का उपयोग कर सकते हैं। यह Int64 से बड़ा है।

इसमें 28-29 महत्वपूर्ण अंक हैं।

7

क्या आप इन नंबरों का उपयोग करना चाहते हैं? यदि आप वास्तव में बड़ी संख्याओं के साथ गणना कर रहे हैं, तो क्या आपको अभी भी अंतिम अंक तक सटीकता की आवश्यकता है? यदि नहीं, तो आपको इसके बजाय फ़्लोटिंग पॉइंट मानों का उपयोग करने पर विचार करना चाहिए। वे विशाल हो सकते हैं, डबल प्रकार के लिए अधिकतम मूल्य 1.79769313486231570E + 308 है, (यदि आपको वैज्ञानिक नोटेशन के लिए उपयोग नहीं किया जाता है तो इसका मतलब है 1.79769313486231570 10000000 गुणा ... 0000 - 308 शून्य)।

कि सबसे अनुप्रयोगों

+0

आश्चर्यजनक है कि किसी और ने इसका उल्लेख नहीं किया है, यह देखते हुए कि ओपी ने पूर्णांक निर्दिष्ट नहीं किया है। –

3

BigInteger के लिए काफी बड़ी होना चाहिए एक मनमाने ढंग से बड़े हस्ताक्षर किए पूर्णांक प्रतिनिधित्व करता है।

using System.Numerics; 

var a = BigInteger.Parse("91389681247993671255432112000000"); 
var b = new BigInteger(1790322312); 
var c = a * b;