1. ホーム
  2. c#

[解決済み] System.FormatException : 文字列を10進数に変換する際に、入力文字列が正しい形式ではありませんでした。

2022-02-16 02:26:49

質問

ASP.NETとC#で少し問題があります。これは私のエラーコードです。

mscorlib.dll で 'System.FormatException' 型の例外が発生したが、>ユーザコードでは処理されなかった。

追加情報:入力文字列が正しい形式ではありませんでした。

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進数に変換できるようにするために何をすべきか教えてもらえますか?

解決方法は?

0.85"の代わりに"0,85"を使ってみてください。カルチャーを変えればドットデシマルも使えると思います。 詳しくはこちらをご覧ください。 double.ToString()で小数点以下の記号を変更するには?