如果你必须持有比ulong类型更大的数字,你会使用什么(0到18,446,744,073,709,551,615)?比如测量行星或星系之间的距离?
答案 0 :(得分:4)
对于最多只需要28位的值,您可以使用System.Decimal
。它的设计方式,你不会遇到double
的缩放问题,对于大数字,两个相邻数字之间的差距大于1.不可否认,这看起来有点奇怪,给定decimal
通常用于非整数值 - 但在某些情况下,我认为只要您正确记录它,它就是完全合理的用途。
对于大于此值的值,您可以使用System.Numerics.BigInteger
。
另一种方法是只使用double
并接受您确实不将精度降低到整数。当谈到星系之间的距离时,你真的会有一个准确的值吗?它取决于你将如何使用它 - 如果你使用一个可以预测的整数类型,它肯定会使测试变得更简单,但是你应该考虑这些值的去向去吧,你将要做些什么。
答案 1 :(得分:1)
我很怀疑你需要有整数类型来存储星系之间的距离。据我所知,在少数情况下需要非常大的整数值,如(示范)加密。对于这些情况,您可以使用System.Numerics.BigInteger
。
我认为您应该使用浮点类型(例如double
)用于您描述的目的。