1
double mrp = Convert.ToDouble(gvRow.Cells[9].Text.ToString());

在上面的代码中,当mrp = "6458.0"它工作正常但有时当mrp为空时它会抛出一个异常。请帮助我解决这个问题......

4

7 回答 7

1

使用Double.TryParse,这不会抛出异常,如果解析失败,那么您将获得0解析后的值。

double number;
if (double.TryParse(gvRow.Cells[9].Text, out number))
{
    //valid
}
{
    //invalid
}

//if invalid then number will hold `0`
于 2013-04-02T10:33:30.823 回答
1

使用Double.TryParse检查转换是否成功。

double mrp;
if (Double.TryParse(gvRow.Cells[9].Text.ToString(), out mrp))
{
   // Success
}
else
{
  // Cannot convert to double
}

此外,您可能想使用Double.IsNan

于 2013-04-02T10:33:48.880 回答
1

你应该试试这个:double mrp = gvRow.Cells[9].Text.ToString() != "" ? Convert.ToDouble(gvRow.Cells[9].Text.ToString()): 0.0;

于 2013-04-02T10:34:23.873 回答
0
if (Double.TryParse(gvRow.Cells[9].Text.ToString(), out mrp))
   Console.WriteLine("Ok");
else
   Console.WriteLine("not a number");
于 2013-04-02T10:33:53.693 回答
0

试试 double.tryParse

参考

Convert.ToDouble will throw an exception on non-numbers
Double.Parse will throw an exception on non-numbers or null
Double.TryParse will return false or 0 on any of the above without generating an exception.
于 2013-04-02T10:50:11.750 回答
0

您可以使用 double.Tryparse..

 double num; 

if(Double.Tryparse(gvRow.Cells[9].Text.ToString(),num) 
{
  // get the converted value
}
else
{
  //invalid
}
于 2013-04-02T10:37:33.227 回答
0

正如其他人所说,您应该使用 Double.TryParse。

但作为一种替代方式,您可以通过数据类型检查来验证您的单元格,或者它不应该为空等。

于 2013-04-02T10:40:48.550 回答