我应该如何用科学计数法(+301)解析大量数字?

时间:2019-07-25 08:08:15

标签: c# parsing console

我正在尝试解析Math.Pow(2,1000)的答案,但最终只能得到相同的答案1.07150860718627E+301。我已经尝试使用BigIntegerdecimal.Parsedouble.TryParse。我希望将其存储在没有小数的数组中

2 个答案:

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