尝试将float转换为Int32时,Convert.ToInt32(float)失败

时间:2010-08-24 15:27:30

标签: c# backgroundworker int32

没有抛出任何异常,函数在此语句中暂停:

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

并返回。

将此浮动转换为Int32

我做错了什么?

注意:我正在使用BackgroundWorkerThread

4 个答案:

答案 0 :(得分:8)

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

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

,这是不可避免的

答案 1 :(得分:6)

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

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:0)

出现FormatException 输入字符串的格式不正确。