在 Java 中,BigDecimal 表示任意精度的数值,判断是否“大于 / 小于 / 等于”时不能用 >、<、==,而是要使用它提供的 比较方法。
compareToBigDecimal a = new BigDecimal("123456789123456789123456789");
BigDecimal b = new BigDecimal("987654321987654321987654321");
int result = a.compareTo(b);
result < 0 // a < b
result == 0 // a == b
result > 0 // a > b
if (a.compareTo(b) > 0) {
System.out.println("a > b");
} else if (a.compareTo(b) == 0) {
System.out.println("a == b");
} else {
System.out.println("a < b");
}
✅ 这是最推荐、最安全、最标准的方式
equalsa.equals(b)
⚠️ equals 会同时比较值和精度
new BigDecimal("1.0").equals(new BigDecimal("1.00")) // false
而:
new BigDecimal("1.0").compareTo(new BigDecimal("1.00")) // 0
✅ 比较“数值大小”一定要用 compareTo
==a == b
这是比较引用地址,不是数值。
| 目的 | 写法 |
|---|---|
| 判断大于 | a.compareTo(b) > 0 |
| 判断小于 | a.compareTo(b) < 0 |
| 判断等于 | a.compareTo(b) == 0 |
| 是否 ≥ | a.compareTo(b) >= 0 |
| 是否 ≤ | a.compareTo(b) <= 0 |
BigDecimal ZERO = BigDecimal.ZERO;
a.compareTo(BigDecimal.ZERO) == 0 // 是否为 0
a.compareTo(BigDecimal.ZERO) > 0 // 正数
a.compareTo(BigDecimal.ZERO) < 0 // 负数
BigDecimal 比较任意精度数值大小,统一使用
compareTo方法
如果你是想:
我也可以给你更具体的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。