2010-10-19 8 views
1
private int FindNumber(string sPar) 
    { 
     // Get the last number 
     int len = sPar.Length; 
     string s = sPar.Substring(len-1); 
     return new (int)Decimal(s); 
    } 

Dans ce je reçois l'erreur; Champs obligatoires . Quelqu'un peut-il m'aider à ce sujet.Coulée à l'aide d'une décimale en C#

Merci!

+3

'nouveau (int) décimale (s)' est tout simplement pas la syntaxe correcte. :) – bzlm

Répondre

0

qu'est-ce que Decimal(s)? Si vous voulez dire « Parse comme une décimale, puis jeté int »:

return (int)decimal.Parse(s); 

S'il est connu pour être un entier, juste:

return int.Parse(s); 

En fait, puisque vous êtes seulement intéressé par le dernière chiffres, vous pouvez tricher:

private static int FindNumber(string sPar) 
{ 
    char c = sPar[sPar.Length - 1]; 
    if (c >= '0' && c <= '9') return (int)(c - '0'); 
    throw new FormatException(); 
} 
5

Changer votre code à ceci:

private int FindNumber(string sPar) 
{ 
     int len = sPar.Length; 
     string s = sPar.Substring(len - 1); 
     return Convert.ToInt32(s); 
} 

Ou, encore plus court:

private int FindNumber(string sPar) 
{ 
     return Convert.ToInt32(sPar.Substring(sPar.Length - 1)); 
} 
0

Je suppose que vous voulez convertir la chaîne en décimal en tant que votre code est pas très clair.

vous pouvez utiliser

Decimal d1; 
    if(Decimal.TryParse(sPar,out d1))  
    { 
     return d1  
    }  
    else  
    {  
     return 0;  
    } 
0

décimal (s) n'est pas un appel valide depuis décimal est un type. Essayez Decimal.Parse (s) à la place si vous êtes certain que s est un nombre décimal valide, stocké sous forme de chaîne. Sinon, utilisez plutôt Decimal.TryParse.

S'il vous plaît prendre en compte les différents problèmes liés à la culture également, consultez la surcharge qui prend un IFormatProvider (je pense, pas sûr du nom exact)

1

Je ne suis pas à 100% ce que vous essayez de faire ici , mais si vous voulez obtenir 4 à la suite de la chaîne « 17894 » je suppose que vous voulez écrire comme ceci avec un nombre minimum de changements:

private int FindNumber(string sPar) { 
    // Get the last number 
    int len = sPar.Length; 
    string s = sPar.Substring(len-1); 
    return int.Parse(s); 
} 

Aucune raison d'inclure une décimale et l'analyser à un int si vous ne prenez qu'un caractère de la chaîne de toute façon.

Notez que cela donnera une exception si le dernier caractère de la chaîne pour une raison quelconque n'est pas un nombre.

0

Voulez-vous juste analyser le chiffre de la dernière position de la chaîne?

private int FindNumber(string sPar) 
{ 
    return int.Parse(sPar.Substring(sPar.Length - 1)); 
} 

Notez que cela échouera si (a) la chaîne est nulle, (b) la chaîne est vide, ou (c) le dernier caractère de la chaîne est pas un chiffre . Vous devriez ajouter quelques vérifications à votre méthode si ces situations sont susceptibles d'être un problème.

0

La dernière ligne est complètement fausse. Votre code prend le dernier caractère d'une chaîne (je présume qu'il s'agit toujours d'un nombre) et le place dans un int.

Effectuez les opérations suivantes

try{ 
return Int32.Parse(s); 
} 
catch(Exception e) 
{ 
// manage conversion exception here 
}