java - 描述数字最准确的 Java 类型是什么

标签 java types numbers

假设性能不是问题,并且知道我只想对程序中的所有数字使用ONE 类型,那么哪种类型才是正确的?我认为 BigDecimal 可能是最佳选择,但我不确定这一点。

最佳答案

这取决于您希望如何使用这些数字。

如果您不太可能需要 float 并且数字不会变得太大,请使用 int 作为最有效的 CPU 使用。

如果数字对于 int 来说太大了,请使用 long。使用两倍的内存,但仍具有 CPU 效率。

如果对于 long 来说太大,请使用 BigInteger。使用数字的最佳字节数。当数字 > 大约 2^65535 时中断,因此适用于大多数情况。比 intlong 慢,但仍然非常快。

如果对于 BigInteger 来说太大了,你就得靠自己了。也许有一天......

如果您需要浮点运算,只要您在它们的范围内工作,floatdouble 都很好。

对于大 float 学或比 doublefloat 更可预测的计算,请使用 BigDecimal。 Ha 有像 BigInteger 这样的限制,但很少被它们咬住。

除此之外,如果您只使用有理数,那么您可能会发现有理数类比 BigDecimal 更有用且更准确。 This看起来不错。

如果您可能会进入非理性领域,您可能会发现一些连分数类别。 Here是一个例子。

关于java - 描述数字最准确的 Java 类型是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22097296/

相关文章:

Java 模式匹配 - 可以记住匹配的模式并稍后在同一个正则表达式中使用吗?

types - 在 F# 中创建提供类型的列表

Python - 在列表中找到最接近0的整数

java - GC(分配失败)[PSYoungGen]

java - java 程序中双数的系统输出

java.sql.SQLException : No suitable driver found for

r - 如何从R中的字符串中提取数字?

string - 类型 "string"和 "func() string"之间有什么区别?

java - 如何在 Java 中表示整数类型的 NaN?

将逗号分隔的字符串与数字进行比较时,MySQL 出现奇怪的行为