如何防止 int 在减去后变为负数
How do I prevent an int from becoming negative after subtracting
我正在尝试从具有设定值的 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,提示您已超过您的天数并且值不会变为负值。
实际结果:价值转为负数。
这一行 int Holidays_Number = int.Parse(Holidays_Number_lbl.Text);
正在设置 Holidays_Number
的值。然后下一行使用 if
语句检查。但是 if
语句不会更改值,它只是检查它。因此,如果它低于 0,它将保持在 0 以下。
您可以在进行算术运算的行中使用 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))
{
...
我正在尝试从具有设定值的 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,提示您已超过您的天数并且值不会变为负值。
实际结果:价值转为负数。
这一行 int Holidays_Number = int.Parse(Holidays_Number_lbl.Text);
正在设置 Holidays_Number
的值。然后下一行使用 if
语句检查。但是 if
语句不会更改值,它只是检查它。因此,如果它低于 0,它将保持在 0 以下。
您可以在进行算术运算的行中使用 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))
{
...