我试图将字符串转换为浮点数,并且不断抛出未处理的异常错误。我该如何解决?

时间:2018-08-20 02:18:35

标签: c#

左侧的变量是浮点数,因此我需要使右侧的项目匹配。但是,它总是告诉我它的格式不正确。

newDvd.Rating=float.Parse(rows["rating"].ToString());

 foreach (DataRow rows in row)
        {
            var newDvd = new DVD();
            newDvd.Title = rows["dvd_title"].ToString();
            newDvd.Price = Convert.ToDecimal(rows["price"].ToString());
            newDvd.Rating = Convert.ToSingle(rows["rating"].ToString());
            inventory.Add(newDvd);
        }

2 个答案:

答案 0 :(得分:1)

使用Parse代替TryParse

float DvdRating;

if(float.TryParse(rows["rating"].ToString(), out DvdRating))
{
  // success! Use DvdRating here
}

If如果无法解析,将返回false。


Parse v. TryParse

如果

Parse 无法解析该值,则抛出异常,而 TryParse 返回一个布尔值,指示其是否成功。

TryParse 不仅在内部try/catch-整个要点在于,它无例外地实现,因此速度很快。实际上,最有可能实现的方式是内部Parse方法将调用 TryParse ,然后在返回false时引发异常。

简而言之,如果您确定该值将有效,请使用“解析”;否则,请使用“解析”。否则,请使用TryParse。

答案 1 :(得分:0)

首先请确保该值不为null或为空,然后尝试执行此操作

    string floatString = "433.34534646";
    if(!string.IsNullOrEmpty(floatString))
    {
         float result = float.Parse(floatString, CultureInfo.InvariantCulture.NumberFormat);
         Console.WriteLine(result);
    }

输出:433.3453