2017-10-18 13 views
-3

besoin d'aide pour résoudre cette erreur s'il vous plaît quelqu'un peut corriger cela? Je l'ai commenté la ligne dans le code ci-dessousimpossible de convertir l'objet de type 'System.Int32' en type 'System.String'. et continuer à obtenir l'erreur Chaîne d'entrée n'était pas dans un format correct

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

Pourriez-vous s'il vous plaît fournir ce que vous allez réaliser avec votre code et quelle erreur exacte avez-vous? –

+0

Je travaille sur un projet sous forme de fenêtres et là sur la boite de calcul j'ai essayé de faire cette logique surtout trouvée sur internet mais continue d'obtenir ces deux erreurs qui sont sur le titre de ce post. – shumayil

+0

** Modifier votre question ** Quelles lignes ont les erreurs, et quelle erreur est sur quelle ligne. Qu'essayez-vous d'accomplir avec l'exemple de code? – NetMage

Répondre

0

Vous êtes le formatage du double en utilisant ToString("00.00") vous ne pouvez pas convertir cette chaîne à un Int32 ...

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

enter image description here

Si vous modifiez votre ToString("00.00") à ToString("00") cela fonctionnera.

Bien qu'en général, je préférerais Int.TryParse afin que vous puissiez gérer les conditions d'erreur. Ce qui suit retournerait -1, s'il y a un échec d'analyse (ce qui sera le cas).

int cvt; 

Console.WriteLine(Int32.TryParse("10.00", out cvt)?cvt:-1); 
0

problème Yout est probablement à l'intérieur de votre si

if (Conversion.Val(subtotal.ToString()) > Conversion.Val(Dt.Rows[indx]["AdvancePayment"])) 

La valeur de Dt.Rows[indx]["AdvancePayment"] est probablement le type dynamique, mais comme int liez pas. Vous avez utilisé une méthode ToString() pour calculer le même type de valeur de la variable totale. Ainsi, le Sugestion est l'utilisation ToString (dans le cas aussi:

if (Conversion.Val(subtotal.ToString()) > Conversion.Val(Dt.Rows[indx]["AdvancePayment"].ToString())) 

S'il vous plaît, la prochaine fois nous dire la ligne que l'erreur throwed ou un meilleur code (cela dépend de votre programmation expecience)