java 中 bigdecimal 的 compareto() 方法返回 int 值(-1/0/1),不能直接用于逻辑运算符 ||,需显式判断返回值是否为 0(相等)、>0(大于)或
BigDecimal 是 Java 中用于高精度十进制计算的核心类,常用于金融、计费等对精度敏感的场景。由于其不可变性和无内置算术比较操作符(如 >, ==, 返回的是 int 类型的比较结果,而非布尔值,因此无法直接参与 ||、&& 等逻辑运算。
✅ 正确用法:显式判断 compareTo() 的返回值
compareTo() 的语义如下:
- 返回 0 → 两个数相等
- 返回 正数(> 0)→ 调用者大于参数
- 返回 负数(小于参数
因此,原错误代码:
if (item.getLength().compareTo(BigDecimal.valueOf(50)) // ❌ 返回 int,不能作 boolean
|| item.getSocre().compareTo(BigDecimal.valueOf(500))
|| item.getAge().compareTo(BigDecimal.valueOf(5000))) { ... }
应修正为明确的布尔表达式。例如,若目标是「任一字段等于对应阈值」: