如何存储BIG int值

时间:2014-07-31 09:04:33

标签: c#

如果你必须持有比ulong类型更大的数字,你会使用什么(0到18,446,744,073,709,551,615)?比如测量行星或星系之间的距离?

2 个答案:

答案 0 :(得分:4)

对于最多只需要28位的值,您可以使用System.Decimal。它的设计方式,你不会遇到double的缩放问题,对于大数字,两个相邻数字之间的差距大于1.不可否认,这看起来有点奇怪,给定decimal 通常用于非整数值 - 但在某些情况下,我认为只要您正确记录它,它就是完全合理的用途。

对于大于此值的值,您可以使用System.Numerics.BigInteger

另一种方法是只使用double并接受您确实将精度降低到整数。当谈到星系之间的距离时,你真的会有一个准确的值吗?它取决于你将如何使用它 - 如果你使用一个可以预测的整数类型,它肯定会使测试变得更简单,但是你应该考虑这些值的去向去吧,你将要做些什么。

答案 1 :(得分:1)

我很怀疑你需要有整数类型来存储星系之间的距离。据我所知,在少数情况下需要非常大的整数值,如(示范)加密。对于这些情况,您可以使用System.Numerics.BigInteger

我认为您应该使用浮点类型(例如double)用于您描述的目的。