C# 列出大整数范围中的奇数

C# 列出大整数范围中的奇数,c#,C#,我是c语言的新手。我有一个windows窗体程序,可以显示从1到n的奇数。 这是源代码: List<int> t = Enumerable.Range(1, 123456).ToList(); var oddNumbers = t.Where(num => num % 2 != 0); txtHasil.Text += oddNumbers.Sum() + E

我是c语言的新手。我有一个windows窗体程序,可以显示从1到n的奇数。 这是源代码:

                    List<int> t = Enumerable.Range(1, 123456).ToList();
                    var oddNumbers = t.Where(num => num % 2 != 0);
                    txtHasil.Text += oddNumbers.Sum() + Environment.NewLine;
                    txtHasil.Text += string.Join(",", oddNumbers.Select(n => n.ToString()).ToArray()) + Environment.NewLine;
                    txtHasil.Text += oddNumbers.Count() + Environment.NewLine;
如果我在这个范围内使用1234,程序运行良好。如果我在这个范围内使用12345,程序仍然运行良好。但是如果我在这个范围内使用123456,程序错误算术运算会导致oddNumbers.Sum行溢出


我应该如何处理123456数据?

您可以使用较大的类型,如Long或Decimal:

这条线

oddNumbers.Sum()
将返回一个整数。您的总和超过了整数的最大大小限制

您可以改为使用Int64,从而获得更大的容量

List<Int64> t = Enumerable.Range(1, 123456).Select(i => (Int64)i).ToList();
var oddNumbers = t.Where(num => num % 2 != 0);
decimal sum = oddNumbers.Sum();

试着用十进制而不是int,或者用长问题标题,比如说..1…2n-1中的奇数之和是n*n,如果你必须经常这样做的话。
oddNumbers.Sum()
List<Int64> t = Enumerable.Range(1, 123456).Select(i => (Int64)i).ToList();
var oddNumbers = t.Where(num => num % 2 != 0);
decimal sum = oddNumbers.Sum();