java - 如何在 Java 中比较两个数字?

标签 java numbers compare

Possible Duplicate:
Comparing the values of two generic Numbers

我想比较 Number 的两个任意实例找出哪个更大。如您所知,它们可能是整数、长整数或 double ,也可能是大整数或大小数。那么该怎么办呢?

  1. 号码未实现 Comparable .
  2. 不能使用 doubleValue(),因为 BigDecimals 或 BigIntegers 可能会损失精度。

我真的需要进行实例测试和类型转换吗? 必须有一些图书馆可以做到这一点。但是我已经检查了 Apache Commons 和 Guava,但没有运气。

编辑 1: 评论指出了这一点:Comparing the values of two generic Numbers .它有一个解决方案,可以使用 toString() 将所有内容转换为 BigDecimal。真的没有更好的方法吗?

编辑 2: 我刚刚发布了 my own version as an answer to the other question .它应该比公认的答案更有效、更健壮。

最佳答案

您不能比较 Number 类型的两个任意实例,因为这可能是无休止的操作。想象两个无理数,唯一的区别是十亿位小数。为此,您必须比较数十亿个小数。

您需要将您的 Number 实例转换为 BigDecimal,根据需要应用舍入,然后比较这两者。

关于java - 如何在 Java 中比较两个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12561485/

相关文章:

java - ZipEntry 的路径名称的文件分隔符?

python - 给定位数时生成 66666 等数字的最快方法

javascript - 用于确定数值落入哪个范围的优雅解决方案

ios - 在 Swift 中获取整数的第 n 位数字?

compare - 计算相对 Levenshtein 距离 - 有意义吗?

java - 如何从 <input type ="file"> 读取图像并使用 servlet 将其写入/显示在另一个 jsp 页面上?

java - 如何使用 JDT-AST 提取已知行中的条件?

java - 泛型、删除和字节码

android-studio - 我想比较 Android studio 中的两个项目

java - 你如何比较人物?