提问人:Johnathan 提问时间:4/28/2019 最后编辑:Trevor ReidJohnathan 更新时间:4/28/2019 访问量:2272
如何防止 int 在减去后变为负数
How do I prevent an int from becoming negative after subtracting
问:
我正在尝试从具有设定值的值中减去一个值。一旦它达到 0 并且我从中减去更多,该值就会变为负数。int
我想如果我使用语句来检查值是否低于 0,它会防止该值变为负数。但该值继续变为负数。如何防止该值进入负值范围?if-else
{
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 时,指出您已超过天数,并且值不会变为负数。
实际结果:值变为负数。
答:
1赞
Tim
4/28/2019
#1
此行正在设置 的值。然后下一行用语句检查它。但该语句不会更改值,它只是检查它。因此,如果它低于 0,它将保持在 0 以下。int Holidays_Number = int.Parse(Holidays_Number_lbl.Text);
Holidays_Number
if
if
3赞
Trevor Reid
4/28/2019
#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))
{
...
上一个:当数据以位为单位时,使用相互依赖的变量和函数求解方程
下一个:具有布尔函数的真值表
评论
Holidays_Number_lbl.Text = Math.Max(0, rdays - days).ToString();
仅当需要显示内容时才将其转换为字符串。