हैलो मैं कुछ मदद की, उदाहरण के लिए दो बड़ी संख्या जोड़ने की कोशिश कर की जरूरत है: 99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 + 9999999999999999999999999999999999999999999999999999999999999999999999999, ऑपरेशन के लिए biginteger का उपयोग कर im, लेकिन मैं एक मूल्य के बहुत बड़ा करने के बाद इस त्रुटि मिलती है: (मूल्य या तो बहुत बड़ा है या एक डबल के लिए बहुत छोटा था)

यहाँ मेरा कोड है:

    Dim one As System.Numerics.BigInteger = message.Text
    Dim two As System.Numerics.BigInteger = mykey.Text
    System.Numerics.BigInteger.TryParse(message.Text, two)
    sum.Text = (one + two).ToString
-1
alan7811 23 जून 2017, 06:42
2
आपके पास एक और प्रश्न है जहां किसी ने BigInteger का उपयोग करने का सुझाव दिया है और आपने स्पष्ट रूप से उस उत्तर का उपयोग किया है और फिर भी आपने थ्रेड में स्वीकार नहीं किया है। कृपया सही काम करें और उन उत्तरों को स्वीकार करें जो वास्तव में आपके प्रश्नों का उत्तर देते हैं।
 – 
jmcilhinney
23 जून 2017, 07:16

1 उत्तर

सबसे बढ़िया उत्तर

आपका कोड वास्तव में समझ में नहीं आता है। मैंने अभी-अभी उन दो BigInteger मानों को जोड़ने का परीक्षण किया है:

Dim one As BigInteger = BigInteger.Parse("99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999")
Dim two As BigInteger = BigInteger.Parse("9999999999999999999999999999999999999999999999999999999999999999999999999")

Console.WriteLine((one + two).ToString)
Console.ReadLine()

और इस तरह:

Dim str1 = "99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999"
Dim str2 = "9999999999999999999999999999999999999999999999999999999999999999999999999"
Dim one As BigInteger
Dim two As BigInteger

BigInteger.TryParse(str1, one)
BigInteger.TryParse(str2, two)

Console.WriteLine((one + two).ToString)
Console.ReadLine()

और इसने दोनों बार अपेक्षा के अनुरूप काम किया।

आपको वास्तव में Option Strict On चालू करने की आवश्यकता है क्योंकि आपका कोड String मानों को BigInteger चरों को निर्दिष्ट कर रहा है, जो लगभग निश्चित रूप से आपकी समस्या का कारण बन रहा है। यदि आपके पास एक String है जिसे आप एक BigInteger में बदलना चाहते हैं तो आपको या तो BigInteger.Parse का उपयोग करना चाहिए जब मान को मान्य माना जाता है या BigInteger.TryParse जब यह नहीं है।

आपका कोड वास्तव में समझ में नहीं आता क्योंकि आप पहले मानते हैं कि निहित रूपांतरण ठीक रहेगा लेकिन फिर आप आगे बढ़ते हैं और TryParse वैसे भी उपयोग करते हैं। यह और भी बेमानी हो जाता है क्योंकि आप TryParse का उपयोग करके गलत BigInteger वैरिएबल को पॉप्युलेट करते हैं। आपको यह समझने की आवश्यकता है कि आपके कोड को लिखने से पहले क्या करना चाहिए, अन्यथा आप बकवास के साथ समाप्त हो सकते हैं और यह नहीं जानते कि यह वह नहीं करता है जो आप नहीं जानते थे कि आप पहली जगह में करना चाहते हैं।

1
jmcilhinney 23 जून 2017, 07:05
मैंने अभी-अभी Option Strict Off को चालू करने और उन Strings को सीधे BigInteger चरों में निर्दिष्ट करने का प्रयास किया और यह वास्तव में आपके द्वारा उल्लिखित अपवाद उत्पन्न करता है। बेशक, आप - और चाहिए - निर्दिष्ट कर सकते थे कि अपवाद किस लाइन पर फेंका गया था। तब इसे हमारी ओर से किसी अटकल या परीक्षण की आवश्यकता नहीं होती। कृपया सही काम करें और सभी प्रासंगिक जानकारी प्रदान करें। जहां कोई त्रुटि होती है वह हमेशा प्रासंगिक होती है।
 – 
jmcilhinney
23 जून 2017, 07:15