我正在嘗試將整數陣列中的所有值相乘。給定輸入陣列的輸出預期為負值,但它回傳為 0。
int[] nums = new int[] {41,65,14,80,20,10,55,58,24,56,28,86,96,10,3,84,4,41,13,32,42,43,83,78,82,70,15,-41};
Console.WriteLine(ArraySign(nums));
int ArraySign(int[] nums)
{
var value= nums.Aggregate(1, (x, y) => x * y); // returns 0
// var value= nums.Aggregate((x, y) => x * y); // returns 0
Console.WriteLine(value);
return value;
}
uj5u.com熱心網友回復:
將陣列中的數字相乘的結果超出了原始數字型別的限制,例如int和long。考慮使用BigInteger代替:
using System.Numerics; // Remember to add reference to "System.Numerics".
BigInteger[] nums = new BigInteger[] { 41, 65, 14, 80, 20, 10, 55, 58, 24, 56, 28, 86, 96, 10, 3, 84, 4, 41, 13, 32, 42, 43, 83, 78, 82, 70, 15, -41 };
BigInteger result = nums.Aggregate((x, y) => x * y);
Console.WriteLine(result); // -4198344456762767222202786622577049600000000
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/462712.html
下一篇:從Unity中的介面序列化屬性
