c#Convert.ToDouble格式exception错误
我正在尝试将此字符串转换为double
Convert.ToDouble("1.12");
这是输出
System.FormatException未处理。
我应该这样做吗?
public static double ConvertToDouble(string ParseVersion) { double NewestVersion; try { NewestVersion = Convert.ToDouble(ParseVersion); } catch { ParseVersion = ParseVersion.Replace('.', ','); NewestVersion = Convert.ToDouble(ParseVersion); } return NewestVersion; } ConvertToDouble("1.12");
或者是否有更简单的解决方案?
double.Parse
默认使用当前文化。 听起来你想要不变的文化:
double d = double.Parse("1.12", CultureInfo.InvariantCulture);
编辑:为了清楚,显然如果你试图解析用户在不同文化中输入的文本,你不应该使用它。 当您在不变文化中接收数据时 (这是大多数基于机器到机器的数据文本格式)并且希望在解析时强制执行此操作时,可以使用此选项。
你不必更换.
to ,
..但更好的方法是使用.net TryParse
方法,如:
double d; if (double.TryParse("your string data", out d) { Console.WriteLine(d); }
编辑:还要注意通过替换.
通过,
你得到一个错误的结果,例如1.12
:
double d = double.Parse(1.12);//d will equals to 1.12 double d = double.Parse(1,12);//d will equals to 112.0
Convert.ToDouble内部使用Double.Parse。 如果您不确定文化背景,您应该使用Double.Parse的重载来精确化文化:
double d = double.Parse("1.12", CultureInfo.InvariantCulture);
请记住,此问题可能取决于输入字符串的来源。 如果从数据库中读取它作为对象,您可以通过将其保留为对象并使用Convert.ToDouble()来解决您的问题,如下所示:
上述就是C#学习教程:c#Convert.ToDouble格式exception错误分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
public double Double_fromObject(object obj) { double dNum = 0.0; if (obj.ToString() != string.Empty) // the Convert fails when "" { try { dNum = Convert.ToDouble(obj); } catch (SystemException sex) { // this class's error string LastError = sex.Message; } } return (dNum); }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1007094.html