8

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

mscorlib.dll 中出现“System.FormatException”类型的异常,但未在 >user 代码中处理

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

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 变量时 - 解析时出现了同样的错误。那么有人可以告诉我该怎么做才能将字符串转换为十进制吗?

4

4 回答 4

6

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

于 2014-04-17T10:30:59.690 回答
2

请尝试使用以下代码片段。

CultureInfo info = CultureInfo.GetCultureInfo("es-ES");
string storedValue = "3,85";
decimal oldAmount;
bool succes = Decimal.TryParse(storedValue, NumberStyles.Any, info, out oldAmount);
于 2014-04-17T10:26:23.283 回答
0

改用 TextBox.Text :

bool succes = Decimal.TryParse(TextBox.Text, out oldAmount);
于 2014-04-17T10:26:05.737 回答
0

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

bool success = Decimal.TryParse(TextBox.Text, out oldAmount);
于 2014-04-17T10:29:52.073 回答