无法将类型为“System.Int32”的对象转换为键入“System.String”。并也不断收到错误输入字符串是不是在一个正确的格式

无法将类型为“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(); 
+0

您能否提供您的代码要实现什么功能,以及您有什么确切的错误? –

+0

我正在开发一个Windows窗体项目,在计算框上我试图做这个逻辑主要在互联网上找到,但不断得到这个帖子的标题这两个错误。 – shumayil

+0

**编辑您的问题**哪些行有错误,哪些错误在哪一行。你想用示例代码完成什么? – NetMage

你是使用ToString("00.00")你不能这个字符串转换为Int32格式化double ...

Console.WriteLine(System.Convert.ToInt32("10.00")); // Will generate an error. 

enter image description here

如果您将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)