In C#, almost all types of data can be converted to any other type. In the same way, we can convert a string to double using a method present inside the “Convert” class called ToDouble() method. There are many overloaded forms of this method and among those overloaded forms, we have two forms to convert a string representation of a number to its equivalent double-precision floating-point number.
Those two overloaded forms are as follows:
Both these methods return a double value after converting the string value to double.
Syntax with Explanation:
The syntax of Convert.ToDouble() method in both its overloaded forms for converting a string to double is as follows:
public static double ToDouble(string strValue);
In the above syntax, ToDouble() method takes one argument of type string (strValue) which is nothing but a string containing a number to convert to double.
public static double ToDouble(string strValue, IFormatProvider provider);
In the above syntax, ToDouble() method takes two arguments; the first is the string representation of a number which needs to be converted to double and second is an object which provides culture-specific formatting information. After conversion both these methods return the equivalent double value for the string passed as the argument.
In C#, the “System” namespace contains a class called “Convert” which contains the ToDouble() method in many overloaded forms to convert the specified type of data to its equivalent double value. Among these overloaded forms, two forms allow us to convert a string representation of a number to its equivalent double-precision floating-point number.
These two forms are as follows:
Let us understand the working of the above method with the help of the below example:
double doubleVal = Convert.ToDouble("855.65");
In the above statement, we have passed a number i.e. “855.65” as a string to ToDouble() method which will be converted to double by the method and the resulted value will be stored in a variable of type double (doubleVal).
Let us now understand the working of the above method with the help of the below example:
NumberFormatInfo provider = new NumberFormatInfo(); provider.NumberDecimalSeparator = "."; provider.NumberGroupSeparator = ","; double doubleVal = Convert.ToDouble("855.65", provider);
In the above statements, we first created an object of IFormatProvider using the class NumberFormatInfo which implements IFormatProvider. Then, we set some important properties for this object like NumberDecimalSeparator and NumberGroupSeparator.
Example showing the conversion of string to double using Convert.ToDouble() method.
Code:
using System; using System.Globalization; namespace ConsoleApp4 { public class Program { public static void Main(string[] args) { string[] strValues = {"85545.624", "34567.6790", "5689.1234"}; double doubleVal = 0; try { //creating an object of NumberFormatInfo NumberFormatInfo provider = new NumberFormatInfo(); provider.NumberDecimalSeparator = "."; provider.NumberGroupSeparator = ","; Console.WriteLine("Equivalent double value of " + "specified strings: "); for (int i = 0; i < strValues.Length; i++) { //converting string to double doubleVal = Convert.ToDouble(strValues[i], provider); //displaying the converted double value Console.WriteLine("{0}", doubleVal); } Console.ReadLine(); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadLine(); } } } }
Output:
Example showing the conversion from string to double using Double.TryParse() method.
Code:
using System; using System.Globalization; namespace ConsoleApp4 { public class Program { public static void Main(string[] args) { string[] strValues = {"2,6893.57", "$2,6893.57", "-2.948e6", "-1.79769313486232E+308", "456BE6", null, String.Empty, "JKLMN"}; Double doubleVal = 0; Console.WriteLine("Equivalent double value of " + "specified strings: "); Console.WriteLine("\n"); for (int i = 0; i < strValues.Length; i++) { if (Double.TryParse(strValues[i], out doubleVal)) //displaying the converted double value Console.WriteLine("'{0}' -> {1}", strValues[i], doubleVal); else Console.WriteLine("Not able to convert '{0}'", strValues[i]); } Console.ReadLine(); } } }
Output:
Example showing scenario when the string to be converted to double is either ‘null’ or empty.
Code:
using System; using System.Globalization; namespace ConsoleApp4 { public class Program { public static void Main(string[] args) { string[] strValues = {null, String.Empty}; Double doubleVal = 0; //creating an object of NumberFormatInfo NumberFormatInfo provider = new NumberFormatInfo(); provider.NumberDecimalSeparator = "."; provider.NumberGroupSeparator = ","; Console.WriteLine("Result of conversion using " + "Double.TryParse() method: "); Console.WriteLine("\n"); for (int i = 0; i < strValues.Length; i++) { if (Double.TryParse(strValues[i], out doubleVal)) { Console.WriteLine("'{0}' -> {1}", strValues[i], doubleVal); } else { Console.WriteLine("Not able to convert '{0}'", strValues[i]); } } Console.WriteLine("Result of conversion using " + "Convert.ToDouble() method: "); Console.WriteLine("\n"); try { for (int i = 0; i < strValues.Length; i++) { doubleVal = Convert.ToDouble(strValues[i], provider); Console.WriteLine("'{0}' -> {1}", strValues[i], doubleVal); } Console.ReadLine(); } catch(Exception exception) { Console.WriteLine(exception.Message); Console.ReadLine(); } } } }
Output:
以上是在 C# 中将字符串转换为双精度的详细内容。更多信息请关注PHP中文网其他相关文章!