2011-02-10 20 views
36

पर पार्स करने में समस्या मैं दशमलव में "$ 45.59" जैसी स्ट्रिंग को पार्स करने का प्रयास कर रहा हूं। किसी कारण से मुझे अपवाद मिल रहा है कि इनपुट सही प्रारूप में नहीं था। मुझे सभी स्थानीयकरण सामग्री की परवाह नहीं है क्योंकि यह एक वैश्विक कार्यक्रम नहीं होने वाला है। मैं यही कर रहा हूँ। क्या आपको कोई समस्या है?दशमलव प्रकार को दशमलव प्रकार

NumberFormatInfo MyNFI = new NumberFormatInfo(); 
MyNFI.NegativeSign = "-"; 
MyNFI.NumberDecimalSeparator = "."; 
MyNFI.NumberGroupSeparator = ","; 
MyNFI.CurrencySymbol = "$"; 
decimal d = decimal.Parse("$45.00", MyNFI); // throws exception here... 

उत्तर

89

कैसे उपयोग करने के बारे:

decimal d = decimal.Parse("$45.00", NumberStyles.Currency); 

Decimal.Parse राज्यों पर MSDN प्रलेखीकरण:।

"द रों पैरामीटर NumberStyles.Number शैली का उपयोग व्याख्या की है इसका मतलब है कि सफेद स्थान और हजारों विभाजकों की अनुमति है लेकिन मुद्रा प्रतीकों नहीं हैं। तत्वों को स्पष्ट रूप से परिभाषित करने के लिए (जैसे मुद्रा प्रतीकों, हजारों विभाजक, और सफेद स्थान) जो एस में मौजूद हो सकते हैं, दशमलव का उपयोग करें। पर्स (स्ट्रिंग, NumberStyles, IFormatProvider) विधि

+1

और यदि आप अभी भी अपने 'नंबरफॉर्मैटइन्फो' का उपयोग करना चाहते हैं: 'दशमलव डी = दशमलव। पर्स (" $ 45.00 ", संख्या स्टाइल। कुरेंसी, माईएनएफआई);' –

+1

यह तय करता है। मैं बस चाहता हूं कि मैं समझता हूं कि मेरा पहला दृष्टिकोण क्यों काम नहीं करता ... – PICyourBrain

+1

डीएसडीएन दस्तावेज दशमलव पर। पर्स कहता है: "एस पैरामीटर को संख्या स्टाइल नम्बर शैली का उपयोग करके व्याख्या किया जाता है। इसका मतलब है कि सफेद स्थान और हजारों विभाजकों की अनुमति है लेकिन मुद्रा प्रतीकों नहीं हैं। तत्वों को स्पष्ट रूप से परिभाषित करने के लिए (जैसे मुद्रा प्रतीकों, हजारों विभाजक, और सफेद स्थान) जो एस में मौजूद हो सकते हैं, दशमलव का उपयोग करें। पर्स (स्ट्रिंग, संख्या स्टाइल, IFormatProvider) विधि। " –

11

इस तरह यह मेरे लिए काम करता है:

NumberFormatInfo MyNFI = new NumberFormatInfo(); 
MyNFI.NegativeSign = "-"; 
MyNFI.CurrencyDecimalSeparator = "."; 
MyNFI.CurrencyGroupSeparator = ","; 
MyNFI.CurrencySymbol = "$"; 

decimal d = decimal.Parse("$45.00", NumberStyles.Currency, MyNFI); 

1.) आप संख्या विभाजक के बजाय मुद्रा विभाजक परिभाषित करने के लिए किया है। 2.) क्योंकि आपने केवल मुद्रा मानों को परिभाषित किया है, इसलिए आपको संख्याओं को परिभाषित करने की आवश्यकता है। पार्सिंग करते समय मुद्रा।

संबंधित मुद्दे