Lar*_*nal 40
它在System.Numerics中."BigInteger类型是一个不可变类型,表示一个任意大的整数,其理论上的值没有上限或下限."
var i = System.Numerics.BigInteger.Parse("10000000000000000000000000000000");
Run Code Online (Sandbox Code Playgroud)
phu*_*clv 30
System.Int128System.UInt128自 .NET Core 7.0 Preview 5 起可用
它们在添加对 Int128 和 UInt128 数据类型的支持中实现
我不知道为什么它们没有出现在.NET 7 Preview 5 公告中,但在即将发布的 .NET 7 Preview 6 公告中也会出现Int128Converter,并且UInt128Converter对于 Preview 5 中的新类型
不过,它们还没有C# 支持,就像 一样System.Half,因此您必须Int128显式使用而不是使用本机 C# 关键字
Ric*_*key 28
虽然BigInteger对于大多数应用程序来说是最佳解决方案,但如果您有性能关键的数值计算,则可以使用Dirichlet.Numerics库中的完整Int128和UInt128实现.这些类型是如果有用的话和过小,但速度太慢.Int64UInt64BigInteger
Jon*_*eet 12
不,.NET <= 3.5中没有任何内容.我希望/期望BigInteger能够在.NET 4.0中获得回报.(它是从.NET 3.5中删除的.)
BigInteger现在是 C# 和 .NET 4.0 中的标准部分。请参阅:Gunnar Peipman 的 ASP.NET 博客。
请注意,CPU 通常可以在恒定时间内更快地处理普通整数,尤其是在使用常用数学运算符(+、-、/...)时,因为这些运算符通常直接映射到单个 CPU 指令。
对于BigInteger,即使是最基本的数学运算也是慢得多的函数调用,其运行时间随数字大小而变化。这是因为BigInteger实现任意精度算术,这增加了相当大但必要的开销。好处是 BigInteger 不限于 64 位甚至 128 位,而是受可用系统内存(或大约 2 64位精度,以先到者为准)的限制。
阅读此处。