我的代码问题是如果我把钱付给付钱(文本框)而我转向零给我一个错误
System.FormatException:'输入字符串的格式不正确。'
这是我的代码:
TimerStop
我会在这里填写表格
我希望你能帮助我,谢谢你们
答案 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
。如果字符串pm
和fee
格式不正确,则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();
}