[英]Why does this lambda function return the wrong answer
我正在尝试将 C# 中的 int 数组转换为普通的 integer 它适用于大多数数字,但是当我有以下代码时:
int[] digits = new int[] { 9,8,7,6,5,4,3,2,1,0 };
int bignumber = digits.Select((t, i) => t * Convert.ToInt32(Math.Pow(10, digits.Length - i - 1))).Sum();
它返回 1286608618 而不是 9876543210
我想这与数组的长度有关吗? 但我不明白如何......如果我删除最后的 0 并使数组长 9 个数字,它就可以正常工作。 在第 10 个 position 中粘贴任何数字,它会再次中断。
Sum 超出了最大 Int32 的范围,即2147483647
。 改用 Int64(长):
int[] digits = new int[] { 9,8,7,6,5,4,3,2,1,0 };
long bignumber = digits.Select((t, i) => t * Convert.ToInt64(Math.Pow(10, digits.Length - i - 1))).Sum();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.