我正在尝试将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();