为了账号安全,请及时绑定邮箱和手机立即绑定

如何防止 int 在减去后变为负数

如何防止 int 在减去后变为负数

C#
30秒到达战场 2022-12-31 13:55:23
我正在尝试从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))

 {


...


查看完整回答
反对 回复 2022-12-31
?
MYYA

TA贡献1868条经验 获得超4个赞

此行int Holidays_Number = int.Parse(Holidays_Number_lbl.Text);正在设置 的值Holidays_Numberif然后下一行用语句检查它。但是该if语句不会更改值,它只是检查它。因此,如果它低于 0,它将保持在 0 以下。



查看完整回答
反对 回复 2022-12-31
  • 2 回答
  • 0 关注
  • 83 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信