发布于2026-07-15 阅读(0)
扫一扫,手机访问
先说个基础:BigDecimal的max和min方法,直接返回数值较大或较小的那个对象引用。它俩比较的是真实数值大小,不是字符串,精度不同时会自动对齐,而且不接受null参数。

BigDecimal 的 max 和 min 方法,说白了就是直接返回较大的或较小的那个值,省去了手动比较的麻烦。它们是实例方法,调用时传另一个 BigDecimal 对象进去就行。内部比较的是数值大小(不是字符串),结果要么是原对象,要么是参数对象的引用,不会创建新对象。前提是两者精度一致;如果精度不同,它会先对齐精度再比较。
这两个都是 BigDecimal 类的实例方法,语法挺直观的:
a.max(b) 返回 a 和 b 中数值更大的那个a.min(b) 返回 a 和 b 中数值更小的那个BigDecimal,可以链式调用或者赋值给变量max/min 比较的是真实数值大小,跟 compareTo() 一样,不受 scale(小数位数)影响:
new BigDecimal("1.0").max(new BigDecimal("0.999")) 结果是 1.0(不是按字符串 "1.0" > "0.999" 判定的)new BigDecimal("2").min(new BigDecimal("1.50")) 结果是 1.50(因为数值 1.5 小于 2)compareTo(),所以如果你传 null 进去,直接就是 NullPointerException实际用起来,有些细节容易忽略,结果可能跟预期不一样:
equals() 判断相等性后再调 max/min —— max(a, a) 肯定返回 a,但 equals() 可能因为 scale 不同返回 falsesetScale(scale, roundingMode) 规范化,然后再调 max/minStream.of(a, b, c).max(BigDecimal::compareTo).orElse(null)max 和 min 不接受 null 参数,运行时直接抛异常。建议提前做校验:
Objects.requireNonNull(a).max(Objects.requireNonNull(b)) 明确失败点static BigDecimal safeMax(BigDecimal a, BigDecimal b) { return a == null ? b : b == null ? a : a.max(b); }
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8