स्टीवन के प्रश्न को अलग-अलग तर्क देने के बजाय, महत्वपूर्ण बात क्यों दशमलव विभाजक .
है।
यदि ऐसा इसलिए है क्योंकि स्रोत कंप्यूटर-पठनीय प्रारूप में है जहां अवधि दशमलव विभाजक को दस्तावेज़ विनिर्देश के हिस्से के रूप में निर्दिष्ट किया गया है, तो मैं ठीक उसी तरह जाऊंगा क्योंकि स्टीवन CultureInfo.InvariantCulture
का उपयोग करने में करता है।
यदि यह किसी विशेष लोकेल में मानव इनपुट है, तो आप उस लोकेल के लिए CultureInfo
द्वारा उस लोकेल से मेल खाना चाहते हैं, अन्यथा यदि सॉफ़्टवेयर का उपयोग एक अलग लोकेल के साथ किया जाता है तो आपको बिल्कुल विपरीत समस्या होगी। आम तौर पर आप इस (CurrentCulture
प्रारूपों के लिए CurrentUICulture
) के लिए मिलान करने के लिए थ्रेड के CurrentCulture
सेट करना चाहते हैं। यदि आपने ऐसा किया है, तो आपको संस्कृति को पारित करने की आवश्यकता नहीं है, क्योंकि float.Parse(string)
उस संस्कृति का उपयोग करता है - हालांकि, आप यह स्पष्ट करने के लिए float.Parse(string, CurrentCulture)
का उपयोग करना चाहेंगे कि यह वही है जो आप कर रहे हैं (और बंद करने के लिए कुछ सॉफ्टवेयर विश्लेषण जो शिकायत करते हैं जब आप इस तरह से विशिष्ट नहीं हैं)।
क्या वास्तव में मुश्किल हो जाता है, यदि आपको संभावित रूप से दोनों अवधि और अल्पविराम को स्वीकार करना है - कम से कम नहीं, क्योंकि कई संस्कृतियां जो दशमलव विभाजक के रूप में अवधि का उपयोग करती हैं, अल्पविराम के रूप में अल्पविराम का उपयोग करते हैं, और आखिरकार असीमित पार्सिंग की गारंटी देना असंभव है। हालांकि, मानते हुए कि हजारों मुद्दे आपको प्रभावित नहीं करते हैं, तो आपके प्रश्न में जो कोड दिया गया वह दृष्टिकोण है, हालांकि मैं विपरीत करने की सिफारिश करता हूं (अवधि के साथ अल्पविराम को प्रतिस्थापित करता हूं) और फिर इनवेरिएंट संस्कृति के साथ विश्लेषण करता हूं, क्योंकि इससे कोई भी हटा देता है और अधिक जटिलताओं के कारण और अधिक जटिलताओं के कारण।
स्रोत
2011-03-20 00:34:55
क्यों 'nl-NL' और नहीं' CultureInfo.InvariantCulture'? –
@ जोनास: 'एनएल-एनएल' सिर्फ एक उदाहरण था, लेकिन सवाल को बारीकी से पढ़ने के बाद, मैंने देखा कि ओपी के 'CultureInfo.CurrentCulture'' को दशमलव विभाजक के रूप में '' 'है। डच संस्कृति (nl) वास्तव में दशमलव विभाजक के रूप में ',' का उपयोग करती है, और इसलिए * काम नहीं करेगा। तो यह चाल वास्तव में ऐसी संस्कृति स्थापित करने के लिए है जो '.' को दशमलव विभाजक के रूप में उपयोग करती है जैसे 'एन-यूएस' और इनवेरिएंट संस्कृति। इस बात की जानकारी देने के लिए धन्यवाद। – Steven