为什么这个lambda函数返回错误的答案



我正在尝试将C#中的int数组转换为普通整数它适用于大多数数字,但当我有以下代码时:

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而不是987654310

我想这和数组的长度有关吧?但我不明白。。。如果我去掉末尾的0,使数组9的数字变长,它就可以正常工作。把任意一个数字放在第10位,它就会再次断开。

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();

最新更新