पर डाली गई है, संस्कृति की जानकारी का उपयोग करते समय, संख्या को दो बार परिवर्तित करते समय मुझे अजीब व्यवहार का सामना करना पड़ रहा है।
डच संस्कृति का उपयोग करते हुए "3,3"
को परिवर्तित करते समय, सही ढंग से संभाला जाता है। यदि मैं अमेरिकी संस्कृति का उपयोग कर "3,3"
रूपांतरित करता हूं, तो यह 33
देता है। मैं एक त्रुटि की उम्मीद कर रहा था। मेरा उदाहरण देखें:दशमलव विभाजक के साथ संख्या गलत रूप से डबल
static void Main(string[] args)
{
CultureInfo cultureDutch = new CultureInfo("nl-NL");
CultureInfo cultureUS = new CultureInfo("en-US");
System.Threading.Thread.CurrentThread.CurrentCulture = cultureDutch;
Console.WriteLine("Input 3,3 --> Expected 3,3");
Console.WriteLine("Output = " + Convert.ToDouble("3,3", cultureDutch));
// Actual result --> 3,3
Console.WriteLine("Input 3,3 --> Expected InvalidCastException");
Console.WriteLine("Output = " + Convert.ToDouble("3,3", cultureUS));
// Actual result --> 33
Console.WriteLine();
Console.WriteLine();
System.Threading.Thread.CurrentThread.CurrentCulture = cultureUS;
Console.WriteLine("Input 3.3 --> Expected InvalidCastException");
Console.WriteLine("Output = " + Convert.ToDouble("3.3", cultureDutch));
// Actual result --> 33
Console.WriteLine("Input 3.3 --> Expected 3.3");
Console.WriteLine("Output = " + Convert.ToDouble("3.3", cultureUS));
// Actual result --> 3.3
Console.ReadLine();
}
इसे संभालने का सही तरीका क्या है? जब कोई दशमलव (या हजार) विभाजक अमान्य है तो मैं अपवाद पसंद करूंगा।
अल्पविराम हजारों विभाजक है, .NET यह नहीं है कि उपयोगकर्ता कहां रखता है। या कि एक उपयोगकर्ता के पास अनियमित पैटर्न होता है, जैसे भारतीय करते हैं। आपको वास्तविक फिक्स को आगे बढ़ाने की आवश्यकता है और पता है कि उपयोगकर्ता किस प्रकार की भाषा बोलता है। यह कभी भी वास्तविक समस्या नहीं है, यह थ्रेड है। कंटेंटकल्चर। जब आप डच बोलते हैं तो आपको केवल यह समस्या होती है और इसके बारे में आपके ओएस को बताने के बिना हॉलैंड से नहीं होने का नाटक करता है। –