C# 我应该如何用科学符号(+;301)解析一个非常大的数字?

C# 我应该如何用科学符号(+;301)解析一个非常大的数字?,c#,parsing,console,C#,Parsing,Console,我试图解析Math.Pow(21000)的答案,但我只得到了相同的答案1.07150860718627E+301。我已经尝试过使用biginger、decimal.Parse和double.TryParse。我希望它以int[]的形式存储在一个不带小数的数组中: var value=biginger.Pow(21000);//注:BigInteger。一个A单行解决方案将是: int[] digitsArray = BigInteger.Pow (2, 1000).ToString ().Sel

我试图解析
Math.Pow(21000)
的答案,但我只得到了相同的答案
1.07150860718627E+301
。我已经尝试过使用
biginger
decimal.Parse
double.TryParse
。我希望它以
int[]
的形式存储在一个不带小数的数组中:


var value=biginger.Pow(21000);//注:BigInteger。一个A单行解决方案将是:

int[] digitsArray = BigInteger.Pow (2, 1000).ToString ().Select (d => d - '0').ToArray ();

欢迎来到堆栈溢出。“试图解析答案”是什么意思
Math.Pow(21000)
将返回一个
double
-无需解析。您得到的值与理论上的“正确”值最接近。如果你想要一个精确的整数值,你应该使用
biginger
,然后乘以2千次。糟糕,我已经编辑了问题“我希望它存储在一个没有小数的数组中”-这是什么意思?严肃的问题:我不能用一种增加上下文的方式来解析它question@Marc如果我没有误解的话,OP不希望
150
成为
1.5E+2
。相反,他们想要
[1,5,0]
。我想。编码-如果@John是对的,那就是。。。很奇怪-请澄清!所以
1.07150860718627E+301
1071508607186267320948425049060001810514048117055333607443750388370105112493612249319837881569558127594672917514682582518714528569231404359845775746985748574803345677748242305421074606271141875418215364749835811267398767559165594607762914571196478654217660429852626286720566806976
;1.07150860718627E+301是其近似值,其中302位中的大多数为零;1071508607186267320948425049060001181051404811705336074437503883703511249361224931983788156955812759467291755314682587145285692314043598457746985748574839345677748242309854210746056237114187541821536474983581941267398767555946077069145711964776865421676042985262868672056680376是准确的值,但x.yEz的意思是(x.y)*(10^z),即“想象x.y,但小数点向右移动z-1位”@CodeRed k;如果在数字和之后,则不需要
int[]
-您可以从
字符串开始工作;我会编辑答案是的,事实上,在我意识到这一点后,我刚刚删除了我的评论thing@CodeRed字符串是字符数据;我们想要数字;方便的是,数字0-10在ASCII/unicode表中是顺序的,并且以零开始,因此如果我们从ASCII数字的任何字符中减去字符零,我们就得到了数字。或者作为示例,字符
'7'
为ASCII 55,字符
'0'
为ASCII 48<代码>'7'-'0'
=55-48=7