दिलचस्प पोस्ट
मैं कैसे जावास्क्रिप्ट भाषण की स्थिति को सिंक्रनाइज़ कर सकता हूं? जीवीएम में टैब क्लोज़ बटन को कैसे दिखाना है? केवल तत्व के लिए सीएसएस शैलियाँ रीसेट / हटाएं एसक्लबफाल्ड क्या है और मुझे क्यों परवाह करना चाहिए? रेगएक्स: उद्धरण चिह्नों के बीच मूल्यों को हथियाने उद्देश्य- c में @ प्रतीक क्या दर्शाता है? इस अजगर स्निपेट में अर्धविराम की अनुमति क्यों है? क्लिक किए जाने पर एंड्रॉइड में बटन का रंग कैसे बदल सकता है? स्विफ्ट में सटीक स्ट्रिंग प्रारूप निर्दिष्ट मोगोडीबी के साथ उप-दस्तावेज में सरणी कैसे फ़िल्टर करें लेबल को हाइलाइट करें अगर चेकबॉक्स को चेक किया गया हो jQuery डेटा-एट्रिब्यूट मान के आधार पर एक तत्व कैसे ढूंढें? एक विशेष स्थिति में एक तत्व को खोजने के लिए jQuery का उपयोग करना? PowerShell का उपयोग कर FTP के साथ फाइल अपलोड करें पायथन मॉड्यूल में सभी फ़ंक्शन कैसे सूचीबद्ध करें?

स्ट्रिंग को सी में दो में परिवर्तित करना #

मेरे पास डबल-टाइप वैल्यूज़ ("value1 # value2 # value3 # …) के साथ एक स्ट्रिंग है। मैं इसे स्ट्रिंग तालिका में विभाजित करता हूँ। फिर मैं इस तालिका से एक तत्व को दोहरा कर बदलना चाहता हूं, और मुझे एक त्रुटि मिलती है। गलत है? मैं इस स्ट्रिंग (स्ट्रिंग ए) से दोहरे प्रकार के मानों से कैसे प्राप्त कर सकता हूं?

string a = "52.8725945#18.69872650000002#50.9028073#14.971600200000012#51.260062#15.5859949000000662452.23862099999999#19.372202799999250800000045#51.7808372#19.474096499999973#"; string[] tablicaLatLng = a.Split(new char[] { '#' }); for (int i = 0; i < tablicaLatLng.Length; i++) { Console.WriteLine(tablicaLatLng[i]); } Console.WriteLine(tablicaLatLng[0]); // 52.8725945 Convert.ToDouble(tablicaLatLng[0]); // error 

वेब के समाधान से एकत्रित समाधान "स्ट्रिंग को सी में दो में परिवर्तित करना #"

आपके पहले डबल के मामले में (जैसा कि आप इसके लिए पूछते हैं): ऐसा लगता है कि यह संस्कृति से जुड़ी समस्या है, कोशिश करें कि इसे काम करना चाहिए

 Console.WriteLine(Convert.ToDouble("52,8725945")); 

इस स्थिति में आपको अपनी स्ट्रिंग को पार्स करना चाहिए जैसे कि double.Parse :

 double.Parse("52.8725945", System.Globalization.CultureInfo.InvariantCulture); 

दूसरी ओर आपके पास स्ट्रिंग में बाद में गलत डबल है।

अधिकांश लोग पहले से ही आपके सवालों के जवाब देने की कोशिश कर रहे हैं।
यदि आप अभी भी डिबगिंग करते हैं, तो क्या आपने इसका उपयोग करने के बारे में सोचा है:

 Double.TryParse(String, Double); 

इससे आपको वास्तविक पार्सिंग करने से पहले प्रत्येक स्ट्रिंग में क्या गलत है यह निर्धारित करने में मदद मिलेगी।
यदि आपके पास एक संस्कृति संबंधी समस्या है, तो आप इसका उपयोग करने पर विचार कर सकते हैं:

 Double.TryParse(String, NumberStyles, IFormatProvider, Double); 

यह http://msdn.microsoft.com/en-us/library/system.double.tryparse.aspx का उपयोग करने के तरीके पर वास्तव में एक अच्छा उदाहरण है।

यदि आपको एक लंबा, Int64.TryParse की आवश्यकता है तो भी उपलब्ध है: http://msdn.microsoft.com/en-us/library/system.int64.tryparse.aspx

उम्मीद है की वो मदद करदे।

 private double ConvertToDouble(string s) { char systemSeparator = Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyDecimalSeparator[0]; double result = 0; try { if (s != null) if (!s.Contains(",")) result = double.Parse(s, CultureInfo.InvariantCulture); else result = Convert.ToDouble(s.Replace(".", systemSeparator.ToString()).Replace(",", systemSeparator.ToString())); } catch (Exception e) { try { result = Convert.ToDouble(s); } catch { try { result = Convert.ToDouble(s.Replace(",", ";").Replace(".", ",").Replace(";", ".")); } catch { throw new Exception("Wrong string-to-double format"); } } } return result; } 

और सफलतापूर्वक पारित परीक्षाएं हैं:

  Debug.Assert(ConvertToDouble("1.000.007") == 1000007.00); Debug.Assert(ConvertToDouble("1.000.007,00") == 1000007.00); Debug.Assert(ConvertToDouble("1.000,07") == 1000.07); Debug.Assert(ConvertToDouble("1,000,007") == 1000007.00); Debug.Assert(ConvertToDouble("1,000,000.07") == 1000000.07); Debug.Assert(ConvertToDouble("1,007") == 1.007); Debug.Assert(ConvertToDouble("1.07") == 1.07); Debug.Assert(ConvertToDouble("1.007") == 1007.00); Debug.Assert(ConvertToDouble("1.000.007E-08") == 0.07); Debug.Assert(ConvertToDouble("1,000,007E-08") == 0.07); 

एक वर्ग को सार्वजनिक रूप से जोड़ें और इसे बहुत आसानी से कनवर्टटोइंट 32 () की तरह उपयोग करें

  using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary> /// Summary description for Common /// </summary> public static class Common { public static double ConvertToDouble(string Value) { if (Value == null) { return 0; } else { double OutVal; double.TryParse(Value, out OutVal); if (double.IsNaN(OutVal) || double.IsInfinity(OutVal)) { return 0; } return OutVal; } } } 

फिर फ़ंक्शन को कॉल करें

 double DirectExpense = Common.ConvertToDouble(dr["DrAmount"].ToString()); 

आपके स्ट्रिंग में मैं देख रहा हूँ: 15.5859949000000662452.23862099999999 जो कि दोहरी नहीं है (इसमें दो दशमलव अंक हैं)। शायद यह सिर्फ एक वैध इनपुट त्रुटि है?

आप यह भी जान सकते हैं कि आपकी पिछली String खाली होगी, और उस स्थिति के लिए खाता होगा।