c# - لماذا تضاعف.Parse("0.05") 5.0؟



.net parsing (4)

أنا أقرأ قيمة من بلدي App.config. الذي:

 <add key="someValue" value="0.05"/>

وأنا أحاول تحويلها إلى مضاعفة عن طريق القيام:

 var d = double.Parse(ConfigurationManager.AppSettings["someValue"]);

وأنا الحصول على 5.0 إنستادس من 0.05.

يمكنك المشورة؟ ماذا أفعل خطأ وكيف ينبغي تحليل هذا؟

https://src-bin.com


Answer #1

انها بسبب إعدادات الثقافة. يرجى التأكد "." هو محدد في ثقافتك الحالية.


Answer #2

دائما تمرير معلومات ثقافتك عند استخدام double.Parse. هنا في بلجيكا، انها "0،05".


Answer #3

هذا الرمز:

var nfi = new NumberFormatInfo {
    NumberGroupSeparator = ".",
    NumberDecimalSeparator = ","
};
Console.WriteLine(double.Parse("0.05", nfi));

يطبع 5 كذلك، وبالتالي فإن المشكلة هي في إعدادات الثقافة الخاصة بك.

محاولة

var d = double.Parse(
    ConfigurationManager.AppSettings["someValue"], 
    CultureInfo.InvariantCulture);

Answer #4

هذا لضبط ثقافتك، اختبار نفسه ولكن مع فاصلة بدلا من نقطة وسوف ترى هذا العمل

var d = double.Parse("0,05");

لإصلاح هذه المشكلة يمكن أن تستخدم الزائد متابعة وظيفة تحليل

var d = double.Parse(ConfigurationManager.AppSettings["someValue"], CultureInfo.InvariantCulture);




double