我对ASP.NET和C#有点问题。这是我的错误代码:
类型' System.FormatException'的例外情况发生在mscorlib.dll中,但未在>用户代码
中处理其他信息:输入字符串的格式不正确。
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 :(得分:5)
尝试使用" 0,85"而不是" 0.85"。如果你改变文化,我想你可以使用点小数。 以下是一些更多信息: How to change symbol for decimal point in double.ToString()?
答案 1 :(得分:2)
请尝试使用以下代码段。
CultureInfo info = CultureInfo.GetCultureInfo("es-ES");
string storedValue = "3,85";
decimal oldAmount;
bool succes = Decimal.TryParse(storedValue, NumberStyles.Any, info, out oldAmount);
答案 2 :(得分:0)
改为使用TextBox.Text:
bool succes = Decimal.TryParse(TextBox.Text, out oldAmount);
答案 3 :(得分:0)
TextBox.value错误。 YourTextBox.Text是正确的......!
bool success = Decimal.TryParse(TextBox.Text, out oldAmount);