2011-06-28 13 views
7

क्यों double.TryParse() इन सेटिंग के साथ पार्स नहीं होतापार्सिंग संख्या

double.TryParse("1.035,00", 
NumberStyles.AllowCurrencySymbol | NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite | 
NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign, 
GlobalSettings.Instance.DefaultCulture, out price); 

जहां DefaultCulture है sl-एसआई (स्लोवेनियाई) है, जो अंक समूह प्रतीक के रूप में डॉट . है और दशमलव बिंदु के रूप में, । पार्स के बाद price0 बनी हुई है।

?

+0

TryParse एक 'bool' यदि मान को पार्स सफल या असफल इंगित करता है कि रिटर्न में काम किया। आपके उदाहरण के लिए, TryParse 'false' देता है। तो 'मूल्य'' 0' होने का कारण यह है कि स्ट्रिंग को पार्स नहीं किया जा सका। – dtb

+3

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

उत्तर

6

आप NumberStyles.AllowThousands याद कर रहे हैं:

double.TryParse("1.035,00", NumberStyles.AllowCurrencySymbol | 
          NumberStyles.AllowLeadingWhite | 
          NumberStyles.AllowTrailingWhite | 
          NumberStyles.AllowDecimalPoint | 
          NumberStyles.AllowLeadingSign | 
          NumberStyles.AllowThousands, 
          GlobalSettings.Instance.DefaultCulture, out price); 
+0

सही है, धन्यवाद – mare

2

इस के लिए मुझे

double.TryParse("1.035,00", 
NumberStyles.Any, 
GlobalSettings.Instance.DefaultCulture, out price); 
+0

कोई और नंबर नंबर स्टाइल का उपयोग करने की सलाह देगा। एक भावना, अगर इसके साथ कोई संभावित समस्या है? – mare

+1

एमएसडीएन के अनुसार ** इंगित करता है कि AllowHexSpecifier को छोड़कर सभी शैलियों का उपयोग किया जाता है। यह एक समग्र संख्या शैली है। ** – V4Vendetta

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