5.35754303593134E + 300至53575430359313400000000000000000000 ... 000000000
任何人都可以这样做,因为这个数字非常大吗?
我试过了:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
double s = double.Parse((System.Math.Pow(2, 999)).ToString(), System.Globalization.NumberStyles.Float);
Console.WriteLine("value={0}", s);
Console.ReadKey();
}
}
}
答案 0 :(得分:1)
执行以下操作之一
Console.WriteLine(s.ToString("N0")); //comma separated
Console.WriteLine(s.ToString("F0"));
两者都有效。
答案 1 :(得分:0)
你的标题和代码说的不同但是......
基本上,你不能。 decimal
无法保持此值,因为它超出了它的范围。它的范围从7.9 x 10 28 到7.9 x 10 28 。
您可以将其保存为double(Math.Pow
返回类型,并且甚至需要获取字符串表示并在这种情况下将其解析为双倍)或BigInteger
。
double s = Math.Pow(2, 999);
或
BigInteger s = (BigInteger)Math.Pow(2, 999);
如果你想获得这个值的字符串表示,你可以使用"E
" standard numeric format之类的;
s.ToString("E14") // 5,35754303593134E+300
或者你可以使用Jon Skeet的DoubleConverter
class来确切表示它的价值;
DoubleConverter.ToExactString(s) // 5357543035931336604742125245300009052807024058527668037218751941851755255624680612465991894078479290637973364587765734125935726428461570217992288787349287401967283887412115492710537302531185570938977091076523237491790970633699383779582771973038531457285598238843271083830214915826312193418602834034688