我正在尝试从int具有设定值的值中减去一个值。一旦它达到 0 并且我从中减去更多,该值变为负数。我想如果我使用if-else语句来检查该值是否低于 0,它会阻止该值变为负值。但是价值会变成负数。如何防止该值进入负值范围? { DateTime start = dateTimePicker2.Value.Date; DateTime end = dateTimePicker1.Value.Date; TimeSpan difference = end - start; int days = difference.Days; int min = 0; int max = 21; int rdays = Convert.ToInt32(Holidays_Number_lbl.Text); Holidays_Number_lbl.Text = (rdays - days).ToString(); int Holidays_Number = int.Parse(Holidays_Number_lbl.Text); if ((Holidays_Number > min) && (Holidays_Number < max)) { MessageBox.Show("Holidays have been counted"); } else { MessageBox.Show(" You have exceeded your 21 holidays ");//value goes into the minus ? } }预期结果:出现 MessageBox 说你已经超过了你的天数,并且 value 没有变成负数。实际结果:价值转为负数。
2 回答
拉风的咖菲猫
TA贡献1995条经验 获得超2个赞
Math.Max()您可以在执行算术的行中将零指定为可能的最低值:
Holidays_Number_lbl.Text = (Math.Max(rdays - days, 0)).ToString();
但是,您要先转换为字符串,然后再转换回数字。这样的事情将消除对int.Parse:
...
int Holidays_Number = Math.Max(rdays - days, 0);
Holidays_Number_lbl.Text = Holidays_Number.ToString();
if ((Holidays_Number > min) && (Holidays_Number < max))
{
...
MYYA
TA贡献1868条经验 获得超4个赞
此行int Holidays_Number = int.Parse(Holidays_Number_lbl.Text);
正在设置 的值Holidays_Number
。if
然后下一行用语句检查它。但是该if
语句不会更改值,它只是检查它。因此,如果它低于 0,它将保持在 0 以下。
- 2 回答
- 0 关注
- 83 浏览
添加回答
举报
0/150
提交
取消