如果您必须持有大于ulong类型所能持有的数字(0到18446744073709551615(,您会使用什么?例如测量行星或星系之间的距离?
对于最多需要28位数字的值,可以使用System.Decimal
。按照它的设计方式,你不会遇到double
的缩放问题,其中对于大数字,两个相邻数字之间的差距大于1。诚然,这看起来有点奇怪,因为decimal
通常用于非整数值,但在某些情况下,我认为这是一个非常合理的使用,只要你正确地记录它。
对于大于该值的值,可以使用System.Numerics.BigInteger
。
另一种选择是只使用double
,并接受你真的没有得到整数的精度。当谈到星系之间的距离时,你真的会有一个精确到一米的值吗?这确实取决于你将如何使用它-如果你使用一个很好预测的整数类型,它肯定会让测试变得更简单,但你应该真正考虑这些值将去哪里,以及你将如何处理它们。
我很怀疑你是否需要整数类型来存储星系之间的距离。据我所知,在少数情况下,如(演示(加密,需要非常大的整数值。对于这些情况,可以使用System.Numerics.BigInteger
。
我认为您应该使用浮点类型(例如double
(来达到您所描述的目的。