8

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、およびその他の奇妙な組み合わせを試しました。今、問題は文字列とそれらを10進数に解析することにあると確信しています。String 変数を作成すると、解析中に同じエラーが発生しました。それで、誰かが文字列を10進数に変換できるようにするために何をすべきか教えてもらえますか?

4

4 に答える 4

6

「0.85」の代わりに「0,85」を使用してみてください。文化を変えればドット10進数も使えると思います。ここにいくつかの詳細情報があります: 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.value が間違っています。YourTextBox.Text は正しいです...!

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

代わりに TextBox.Text を使用します。

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