我的问题是,当我仅将正数加到整数时,有时会变成负数。我知道加到整数上的数字永远不会为正,因为我尝试将它们放入
maths.abs()
我的代码在下面,非常感谢您的帮助
int Total = 0;
int First = 0;
int Second = 10000;
while (First <= Second)
{
Total += 5000 + (250 * First);
Console.WriteLine(Total);
First++;
}
Console.ReadKey();
答案 0 :(得分:5)
请阅读Checked and Unchecked (C# Reference)。您可以选择进行算术运算的边界检查。 EG:
int Total = 0;
int First = 0;
int Second = 10000;
while (First <= Second)
{
checked
{
Total += 5000 + (250 * First);
}
Console.WriteLine(Total);
First++;
}
Console.ReadKey();
答案 1 :(得分:2)
正如其他人所提到的,您的int
不能使用该数字并且溢出。使用Int64
可以满足您的需求。
Int64 Total = 0;
int First = 0;
int Second = 10000;
while (First <= Second)
{
Total += 5000 + (250 * First);
Console.WriteLine(Total);
First++;
}
Console.ReadKey();
答案 2 :(得分:1)
2,147,483,647是整数的极限,在循环的每次迭代中,您都将“ 1”添加到“第一个”整数中并溢出总整数
1 run = 5000 + 0
2 run = 5000 + 5000 + 250
...
10000 run 12,548,750,000
整数不能容纳该整数并溢出。
int64的限制为9,223,372,036,854,775,807。这将适用于您的代码