// 当需要将字符串格式的数字转为数字时候,我们会用到的函数为Convert.ToDouble(),
// 然而当你的字符串为49,9时,由于包含了逗号,函数会将逗号忽略,直接转为499,
// 所以我们需要使用provider,
// provider是一个获取NumberFormatInfo对象的IFormatProvider实例。
// 所述的NumberFormatInfo对象提供有关的格式的区域性特定信息值。
using System; using System.Globalization; class Example { static void Main() { // Create a NumberFormatInfo object and set some of its properties. NumberFormatInfo provider = new NumberFormatInfo(); provider.NumberDecimalSeparator = ","; provider.NumberGroupSeparator = "."; provider.NumberGroupSizes = new int[] { 3 }; // Define an array of numeric strings to convert. String[] values = { "123456789", "12345.6789", "12345,6789", "123,456.789", "123.456,789", "123,456,789.0123", "123.456.789,0123" }; Console.WriteLine("Default Culture: {0}\n", CultureInfo.CurrentCulture.Name); Console.WriteLine("{0,-22} {1,-20} {2,-20}\n", "String to Convert", "Default/Exception", "Provider/Exception"); // Convert each string to a Double with and without the provider. foreach (var value in values) { Console.Write("{0,-22} ", value); try { Console.Write("{0,-20} ", Convert.ToDouble(value)); } catch (FormatException e) { Console.Write("{0,-20} ", e.GetType().Name); } try { Console.WriteLine("{0,-20} ", Convert.ToDouble(value, provider)); } catch (FormatException e) { Console.WriteLine("{0,-20} ", e.GetType().Name); } } } } // The example displays the following output: // Default Culture: en-US // // String to Convert Default/Exception Provider/Exception // // 123456789 123456789 123456789 // 12345.6789 12345.6789 123456789 // 12345,6789 123456789 12345.6789 // 123,456.789 123456.789 FormatException // 123.456,789 FormatException 123456.789 // 123,456,789.0123 123456789.0123 FormatException // 123.456.789,0123 FormatException 123456789.0123
Convert.ToDouble() 官网参考链接:
https://msdn.microsoft.com/en-us/library/9s9ak971(v=vs.110).aspx