假设性能不是问题,并且知道我只想对程序中的所有数字使用ONE 类型,那么哪种类型才是正确的?我认为 BigDecimal
可能是最佳选择,但我不确定这一点。
最佳答案
这取决于您希望如何使用这些数字。
如果您不太可能需要 float 并且数字不会变得太大,请使用 int
作为最有效的 CPU 使用。
如果数字对于 int
来说太大了,请使用 long
。使用两倍的内存,但仍具有 CPU 效率。
如果对于 long
来说太大,请使用 BigInteger
。使用数字的最佳字节数。当数字 > 大约 2^65535 时中断,因此适用于大多数情况。比 int
或 long
慢,但仍然非常快。
如果对于 BigInteger
来说太大了,你就得靠自己了。也许有一天......
如果您需要浮点运算,只要您在它们的范围内工作,float
或 double
都很好。
对于大 float 学或比 double
或 float
更可预测的计算,请使用 BigDecimal
。 Ha 有像 BigInteger
这样的限制,但很少被它们咬住。
除此之外,如果您只使用有理数,那么您可能会发现有理数类比 BigDecimal
更有用且更准确。 This看起来不错。
如果您可能会进入非理性领域,您可能会发现一些连分数类别。 Here是一个例子。
关于java - 描述数字最准确的 Java 类型是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22097296/