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