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

抛出没有exception,函数只是在这个语句中停止:

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

并返回。

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

注意:我在BackgroundWorkerThread运行。

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

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

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

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

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

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

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