如果您必须保存大于 ulong 类型可以容纳的数字(0 到 18,446,744,073,709,551,615),您会使用什么?例如测量行星或星系之间的距离?
最佳答案
对于只需要最多 28 位数字的值,您可以使用 System.Decimal
。按照它的设计方式,您不会遇到使用 double
所遇到的缩放问题,对于较大的数字,两个相邻数字之间的间隙大于 1。不可否认,这看起来有点奇怪,因为 十进制
通常用于非整数值 - 但在某些情况下,我认为这是一个完全合理的使用,只要您正确记录它。
对于大于该值的值,您可以使用 System.Numerics.BigInteger
.
另一种替代方法是仅使用 double
并接受您确实无法获得低至整数的精度。当谈到星系之间的距离时,你真的会得到一个精确到一米的值吗?它确实取决于您将如何使用它 - 如果您使用可很好预测的整数类型,它肯定可以使测试更简单,但您应该真正考虑这些值将去往何处你打算用它们做什么。
关于c# - 如何存储 BIG int 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25054879/