付钱并改变了

时间:2018-05-03 05:54:41

标签: c#

我的代码问题是如果我把钱付给付钱(文本框)而我转向零给我一个错误

  

System.FormatException:'输入字符串的格式不正确。'

这是我的代码:

TimerStop

我会在这里填写表格

enter image description here

我希望你能帮助我,谢谢你们

3 个答案:

答案 0 :(得分:0)

如果您使用指定为小数的货币值,则可能需要Convert.ToDecimal()。 (我的第二个空检查和空检查建议)

更新澄清:

目前,您正在使用以下内容将字符串转换为Int32:

int number = Convert.ToInt32(fee);
int number2 = Convert.ToInt32(pm);

您可以使用以下内容转换为十进制:

decimal number = Convert.ToDecimal(fee);
decimal number2 = Convert.ToDecimal(pm);

Update2(使用null和空检查更新完整方法):

private void txtPM_TextChanged(object sender, EventArgs e)
{
    string fee = lblFee.Text.Trim();
    string pm = txtPM.Text.Trim();

    decimal number = 0;
    decimal number2 = 0;

    if(!string.IsNullOrWhiteSpace(fee)) number = Convert.ToDecimal(fee);
    if(!string.IsNullOrWhiteSpace(pm)) number2 = Convert.ToDecimal(pm);

    decimal minus = number2 - number;
    txtChange.Text = minus.ToString().Trim();
}

答案 1 :(得分:0)

使用decimal类型,因为它更适合财务和货币计算。为避免异常,请使用decimal.TryParse。如果字符串pmfee格式不正确,则decimal.TryParse将返回零,并且不会抛出任何异常。您也可以删除最后一行的Trim()

private void txtPM_TextChanged(object sender, EventArgs e)
{
    string fee = lblFee.Text.Trim();
    string pm = txtPM.Text.Trim();
    decimal number;
    decimal.TryParse(fee, out number);
    decimal number2;
    decimal.TryParse(pm, out number2);

    decimal minus = number2 - number;
    txtChange.Text = minus.ToString();
}

答案 2 :(得分:0)

您可以使用已在副本中指出的TryParse 在处理货币价值时,使用decimal更有意义。

private void txtPM_TextChanged(object sender, EventArgs e)
{
    decimal.TryParse(lblFee.Text, out decimal number);
    decimal.TryParse(txtPM.Text, out decimal number2);

    txtChange.Text = (number2 - number).ToString();
}

使用C#6.0或更早版本时,您必须declare the variables in a separate statement

private void txtPM_TextChanged(object sender, EventArgs e)
{
    decimal number;
    decimal.TryParse(lblFee.Text, out number);
    decimal number2;
    decimal.TryParse(txtPM.Text, out number2);

    txtChange.Text = (number2 - number).ToString();
}