繁体   English   中英

为什么这个 lambda function 返回错误答案

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM