我正在尝试解析Math.Pow(2,1000)
的答案,但最终只能得到相同的答案1.07150860718627E+301
。我已经尝试使用BigInteger
,decimal.Parse
和double.TryParse
。我希望将其存储在没有小数的数组中
答案 0 :(得分:5)
个数字作为int[]
:
var value = BigInteger.Pow(2, 1000); // note: BigInteger.One << 1000 may be faster?
string s = value.ToString();
int[] digits = new int[s.Length];
for (int i = 0; i < digits.Length; i++)
digits[i] = s[i] - '0';
或者,如果您要注意数字总和(注释):
var value = BigInteger.Pow(2, 1000); // note: BigInteger.One << 1000 may be faster?
string s = value.ToString();
int sum = 0;
foreach (char c in s) sum += c - '0';
(请注意,这仅处理正值;对于负值,您需要对第一个字符进行特殊大小写)
但是要强调:将值始终保持为BigInteger
似乎更自然。
答案 1 :(得分:0)
单行解决方案为:
int[] digitsArray = BigInteger.Pow (2, 1000).ToString ().Select (d => d - '0').ToArray ();