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

时间:2014-04-17 10:22:33

标签: c# asp.net string decimal formatexception

我对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转换为十进制吗?

4 个答案:

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