无法将类型为“System.Int32”的对象转换为键入“System.String”。并也不断收到错误输入字符串是不是在一个正确的格式
问题描述:
需要帮助来解决这个错误请有人可以纠正这个问题吗?我曾留言的行下面的代码无法将类型为“System.Int32”的对象转换为键入“System.String”。并也不断收到错误输入字符串是不是在一个正确的格式
discount = Conversion.Val(Dt.Rows[indx]["DiscountRate"]);
subtotal = (int) ((days * rate) - ((days * rate) * discount));
*total = System.Convert.ToInt32(((Conversion.Val(subtotal.ToString()) - Conversion.Val(Dt.Rows[indx]["AdvancePayment"].ToString())).ToString("00.00")));*//Input string was not in a correct format.
if (Conversion.Val(subtotal.ToString()) > Conversion.Val(Dt.Rows[indx]["AdvancePayment"]))
{
lv.SubItems.Add(System.Convert.ToString(Conversion.Val(total.ToString())));
}
else
{
lv.SubItems.Add("0");
}
lvlcheckin.Items.Add(lv);
}
rs.Dispose();
Module1.con.Close();
答
你是使用ToString("00.00")
你不能这个字符串转换为Int32格式化double
...
Console.WriteLine(System.Convert.ToInt32("10.00")); // Will generate an error.
如果您将ToString("00.00")
更改为ToString("00")
,它将起作用。
虽然一般情况下,我宁愿Int.TryParse
,所以你可以处理错误条件。如果存在解析失败者(将有),以下将返回-1。
int cvt;
Console.WriteLine(Int32.TryParse("10.00", out cvt)?cvt:-1);
答
YOUT问题很可能是内部的,如果
if (Conversion.Val(subtotal.ToString()) > Conversion.Val(Dt.Rows[indx]["AdvancePayment"]))
的Dt.Rows[indx]["AdvancePayment"]
的价值可能是动态类型,但不INT字符串。您使用了ToString()方法来计算总变量的相同类型的值。因此,对策的探讨是使用的ToString(内如果太:
if (Conversion.Val(subtotal.ToString()) > Conversion.Val(Dt.Rows[indx]["AdvancePayment"].ToString()))
请,下一次告诉我们,错误扔行,或更好的代码(这取决于你的编程expecience)
您能否提供您的代码要实现什么功能,以及您有什么确切的错误? –
我正在开发一个Windows窗体项目,在计算框上我试图做这个逻辑主要在互联网上找到,但不断得到这个帖子的标题这两个错误。 – shumayil
**编辑您的问题**哪些行有错误,哪些错误在哪一行。你想用示例代码完成什么? – NetMage