当前位置:  开发笔记 > 编程语言 > 正文

.Net中的Int128?

如何解决《.Net中的Int128?》经验,为你挑选了3个好方法。

我需要做一些大整数数学.是否有任何类或结构代表一个128位整数并实现所有常用的运算符?

顺便说一句,我意识到十进制可以用来表示一个96位的int.



1> Larsenal..:

它在System.Numerics中."BigInteger类型是一个不可变类型,表示一个任意大的整数,其理论上的值没有上限或下限."

var i = System.Numerics.BigInteger.Parse("10000000000000000000000000000000");


好吧,所以BigInteger满足了这个需求,但它不是Int128类型,它进行堆分配(很多'em,每个操作)并且操作32位字,这样的开销就有这样的开销,而它支持任意范围如果我知道我真的需要Int128类型,我不会用它.我认为人们已经使用较小的整数来模拟一个较大的整数一段时间(由于各种硬件限制),并且不应该很难找到合适的C代码并进行调整.我的观点是,BigInteger是一般案例的解决方案,而不是Int128.
BigInteger≠Int128

2> Rick Sladkey..:

虽然BigInteger对于大多数应用程序来说是最佳解决方案,但如果您有性能关键的数值计算,则可以使用Dirichlet.Numerics库中的完整Int128UInt128实现.这些类型是如果有用的话和过小,但速度太慢.Int64UInt64BigInteger



3> Jon Skeet..:

不,.NET <= 3.5中没有任何内容.我希望/期望BigInteger能够在.NET 4.0中获得回报.(它是从.NET 3.5中删除的.)


它实际上是[在.NET 4.0中重新引入](http://msdn.microsoft.com/en-us/library/system.numerics.biginteger(v = vs.110).aspx)并且仍然存在.
@markshep:同意,虽然我认为在几乎所有答案中添加复制/粘贴评论实际上并不是一个好主意.但对于想要使用大整数的人来说,"BigInteger"可能是最好的解决方案.当然,需要额外的工作来使其以与Int128相同的方式溢出.
推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有