【发布时间】:2014-07-31 17:20:13
【问题描述】:
如果您必须保存大于 ulong 类型可以容纳的数字(0 到 18,446,744,073,709,551,615),您会使用什么?例如测量行星或星系之间的距离?
-
当你测量星系之间的距离时,你不再使用米了:-)
-
对,就是这样。如果没记错的话,单位会变成
light years。
标签: c#
如果您必须保存大于 ulong 类型可以容纳的数字(0 到 18,446,744,073,709,551,615),您会使用什么?例如测量行星或星系之间的距离?
light years。
标签: c#
对于最多只需要 28 位的值,您可以使用 System.Decimal。按照它的设计方式,您不会遇到使用 double 进行的缩放问题,其中对于较大的数字,两个相邻数字之间的差距大于 1。诚然,这看起来有点奇怪,因为 decimal 是通常用于非整数值 - 但在某些情况下,我认为这是一个完全合理的用途,只要你正确记录它。
对于大于此的值,您可以使用System.Numerics.BigInteger。
另一种选择是只使用double 并接受你真的别精确到整数。当谈到星系之间的距离时,你真的会有一个值吗?准确的还是一米?这确实取决于你将如何使用它——它当然可以测试如果您使用一个可以很好预测的整数类型,则更简单,但是您应该真正考虑这些值将去哪里以及您将如何处理它们。
【讨论】:
bigint。它与 C# 的 BigInteger 没有任何关系。
MaxValue 是什么意思?
我相当怀疑您是否需要整数类型来存储诸如星系之间的距离之类的东西。据我所知,在少数情况下需要非常大的整数值,例如(演示性)加密。对于这些情况,您可以使用System.Numerics.BigInteger。
我认为您应该将浮点类型(例如double)用于您描述的目的。
【讨论】: