我正在尝试将一些Java代码转换为C#,并遇到了解析.NET中非常大的指数数字的问题。
我要解析的数字是"1.79769313486232E+308"
。
我已经尝试过使用double(这是我正在翻译的代码中使用的)和decimal,但是两者都抛出了一个溢出异常,即数字太大了。
double result = double.Parse("1.79769313486232E+308",
System.Globalization.NumberStyles.Float,
System.Globalization.CultureInfo.InvariantCulture)
我也尝试了其他各种组合,例如使用NumberStyles.Any
。
这在Java中运行良好。但在我尝试转换code from Java之前,我希望在.NET中有另一个(本机)选项。有什么想法吗?
答案 0 :(得分:3)
System.Numerics.BigInteger result = System.Numerics.BigInteger.Parse("1.79769313486232E+308", System.Globalization.NumberStyles.Float);
您可以尝试BigInteger
添加对项目中System.Numerics
的引用
修改强>
由于注释,当前数字可以用int表示(不丢失任何信息),因为它本身就是整数。这是科学记数法,所以这是如何翻译的。举个例子:
1.23E+11 or as 1.23 X 10^11
所以在他的情况下:
1.79769313486232E+308 = 1.79769313486232*10^308
哪个远离双重边界,可以写成biginteger。这个数字本身是整数,所以没有问题!
答案 1 :(得分:0)