首页 > 解决方案 > 当我尝试进行货币计算时,为什么会收到不正确的输入字符串错误?C#

问题描述

我正在尝试创建一个基本的银行柜员应用程序,其中余额总是从 1000 美元开始,您可以存款和取款。目前,由于余额总是从 1000 美元开始,我有

public Form1()
    {
        InitializeComponent();

        lblBalance.Text = "1000.00";
        
    }

在初始化程序中,因为它总是从 1000 开始,然后我有

private void btnWithdraw_Click(object sender, EventArgs e)
       
        //Withdraw button, initializing variables to make withdrawal calculation based on current balance and what input is in withdrawal text box.

    {
        decimal withdraw = Decimal.Parse(txtWithdraw.Text);
        decimal INaccountBalance = Decimal.Parse(lblBalance.Text);
        decimal FINaccountBalance = (INaccountBalance - withdraw);

        lblBalance.Text = FINaccountBalance.ToString("c");
        
        
    }

在提款按钮上单击,这是一个计算,它只是根据标签中的当前余额减去任何输入到提款文本框中的输入来更新余额,但是如果我尝试提款两次以上,我的程序就会崩溃. 所以我可以为取款输入 1 个值,它会进行计算并更新余额,但如果我再次取款,它只会让程序崩溃并给我一个“输入字符串的格式不正确”。错误。

标签: c#types

解决方案


看来,您不能使用Parse 货币格式:

  lblBalance.Text = FINaccountBalance.ToString("c");

返回到类似的lblBalance.Text东西

  123.00$

(注意货币符号$)并且这个字符串不能Parse再次(你已经FormatException抛出)进入decimalon

  decimal INaccountBalance = Decimal.Parse(lblBalance.Text);

您可以尝试格式更改为F2- 让余额为小数点后两位数

  lblBalance.Text = FINaccountBalance.ToString("F2");

现在您将使用没有货币符号的十进制表示

  123.00

可以Parse在下次提款时使用


推荐阅读