web-dev-qa-db-fra.com

System.FormatException: la chaîne d'entrée n'était pas dans un format correct lors de la conversion de chaîne en décimal.

J'ai un petit problème avec ASP.NET et C #. Ceci est mon code d'erreur:

Une exception de type 'System.FormatException' s'est produite dans mscorlib.dll mais n'a pas été gérée dans> code utilisateur

Informations complémentaires: Le format de la chaîne d'entrée était incorrect.

protected void Page_Load(object sender, EventArgs e)
{
    if(this.IsPostBack == false)
    {
        Currency.Items.Add(new ListItem("Euro", "0.85"));
        Currency.Items.Add(new ListItem("Yen", "11.30"));
        Currency.Items.Add(new ListItem("PLN", "4.20"));
        Currency.Items.Add(new ListItem("GBP", "5.62"));
    }
}

protected void Convert_Click(object sender, EventArgs e)
{
    decimal oldAmount;
    bool succes = Decimal.TryParse(TextBox.Value, out oldAmount);

    if(succes)
    {
        ListItem item = Currency.Items[Currency.SelectedIndex];
        decimal newAmount = oldAmount * decimal.Parse(item.Value);
        Result.InnerText = "Result: " + newAmount;
    }

}

J'ai essayé Decimal.Parse, Decimal.TryParse et d'autres combinaisons étranges. Maintenant, je suis sûr que le problème concerne les chaînes et leur analyse en décimal. Lorsque j'ai créé la variable de chaîne - il y avait cette même erreur lors de l'analyse. Alors, quelqu'un peut-il me dire quoi faire pour pouvoir convertir String en décimal?

5
user2855304

Essayez d'utiliser "0,85" au lieu de "0,85". Je pense que vous pouvez utiliser le point décimal si vous changez de culture . Voici quelques informations supplémentaires: Comment changer le symbole de la virgule décimale dans double.ToString ()?

5
sn1ckers

Veuillez essayer avec l'extrait de code ci-dessous.

CultureInfo info = CultureInfo.GetCultureInfo("es-ES");
string storedValue = "3,85";
decimal oldAmount;
bool succes = Decimal.TryParse(storedValue, NumberStyles.Any, info, out oldAmount);
2
Jayesh Goyani

Utilisez TextBox.Text à la place:

bool succes = Decimal.TryParse(TextBox.Text, out oldAmount);
0
David Brossard

TextBox.value est faux. YourTextBox.Text est correct ...!

bool success = Decimal.TryParse(TextBox.Text, out oldAmount);
0
Usman Tariq