C#中将空字符串转换为双精度浮点数

6

我现在想从文本框中获取一个double值,像这样:

String.IsNullOrEmpty(textBox1.Text) ? 0.0 : Double.Parse(textBox1.Text)

但是有一个问题,我不知道如何解析空文本框?

例如,如果使用OleDb和Excel尝试使用空文本框运行此代码,我们将会收到错误信息:

System.FormatException: 输入字符串的格式不正确。


1
你需要在文本框中输入什么值才能引发该异常?你也应该看一下Double.TryParse方法。http://msdn.microsoft.com/en-us/library/994c0zb1.aspx - Brad
你设置了正确的文化吗?在不同的文化中,双精度浮点数的表示方式是不同的。例如,荷兰使用“0,0”而不是“0.0”。 - MrFox
MrFox,是的,你注意到了,我也遇到了问题,但目前还好。 - Itsmeromka
5个回答

17
double val;
if(!double.TryParse(textBox.Text,out val))
    val = 0.0

3
如果你只是将val设置为0,那么就不需要使用if语句。 - Chris Gessler
3
我已经修改了你的代码: double value = Double.TryParse(resultBox.Text, out value) ? value : 0.0; 现在它能够完美运行! - Itsmeromka

3

1
double result;
Double.TryParse("",out result);

如果TryParse为真,则结果将具有双精度值。此外,您可以使用if条件语句。
result = Double.TryParse("",out result) ? result : 0.00

1
如果Double.TryParse无法解析字符串,则返回false并将输出参数设置为0。
double d;
if(double.TryParse(textBox1.Text, out d)
{
  // valid number
}
else
{
  // not a valid number and d = 0;
}

或者

double d;
double.TryParse(textBox1.Text, out d)
// do something with d.  

另外请注意,您可以在同一if语句中使用out参数进行其他逻辑操作:

double d;
if(double.TryParse(textBox1.Text, out d) && d > 500 && d < 1000)
{
  // valid number and the number is between 501 and 9999
}

0
为什么不直接使用Double.TryParse而不抛出异常呢?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接