System.FormatException:将字符串转换为十进制时,输入字符串的格式不正确。

我对ASP.NET和C#有点问题。 这是我的错误代码:

mscorlib.dll中出现“System.FormatException”类型的exception,但未在>用户代码中处理

附加信息:输入字符串格式不正确。

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; } } 

我试过Decimal.Parse,Decimal.TryParse和其他奇怪的组合。 现在我确定问题是字符串并将它们解析为十进制。 当我创建String变量时 – 解析时出现了同样的错误。 那么有人可以告诉我如何将String转换为十进制吗?

尝试使用“0,85”而不是“0.85”。 如果你改变文化,我想你可以使用点小数。 以下是一些更多信息: 如何在double.ToString()中更改小数点的符号?

请尝试使用以下代码段。

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

请改用TextBox.Text:

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

TextBox.value是错误的。 YourTextBox.Text是正确的……!

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