【问题标题】:Convert.ToInt32(float) fails when trying to convert float to Int32尝试将浮点数转换为 Int32 时 Convert.ToInt32(float) 失败
【发布时间】:2010-08-24 15:27:29
【问题描述】:

没有抛出异常,函数只是在这个语句处停止:

int productQuantity = Convert.ToInt32("1.00");

然后返回。

将此浮点数转换为Int32 做错了什么?

注意:我正在运行BackgroundWorkerThread

【问题讨论】:

  • 这是一个字符串,不是一个浮点数。
  • @NullUserException: 是的,但是如果它只是没有小数的“1”,我之前已经转换了。

标签: c# backgroundworker int32


【解决方案1】:

在这种情况下会引发异常,它只是没有出现在调试器中。此字符串不是可转换为 Int32 类型的格式,因此会引发异常。如果 IDE 不合作,您可以通过将其包装在 try/catch 块中来验证这一点。

这里最好的方法可能是将字符串转换为double,然后手动将其转换为int。由于精度差异,这确实为数据丢失打开了大门。但鉴于您的输入采用浮点格式,如果您希望最终产品为 int

,这是不可避免的

【讨论】:

  • 在不可处理的异常上+1好点,容易忘记!
【解决方案2】:

您需要先将其转换为double,然后再转换为Int32

int productQuantity = Convert.ToInt32(double.Parse("1.00"));

【讨论】:

  • 带字符串的我建议始终使用TryParse,省去很多麻烦。
【解决方案3】:

抛出异常,只是为了看到它,您必须检查 BackgroundWorker.RunWorkerCompleted 的事件处理程序中的 RunWorkerCompletedEventArgs.Error 属性。

在后台工作完成时从后台工作线程抛出的任何异常都分配给该属性。

【讨论】:

    【解决方案4】:

    格式异常 输入字符串的格式不正确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-08
      • 2023-02-07
      • 1970-01-01
      • 1970-01-01
      • 2022-12-14
      相关资源
      最近更新 更多