bigdecimal.abs() 返回新绝对值对象且不修改原对象,支持零、正负数,保持不可变性与原始精度,需显式赋值,不同于math.abs()。

BigDecimal.abs() 方法直接返回当前 BigDecimal 对象的绝对值,不修改原对象,返回一个新对象。
基本用法
调用 abs() 无需参数,它会自动处理正负号,对零、正数、负数都有效:
-
new BigDecimal("123.45").abs()→123.45 -
new BigDecimal("-99.99").abs()→99.99 -
new BigDecimal("0").abs()→0 -
new BigDecimal("-0.0").abs()→0.0(注意:-0.0 的绝对值仍是 0.0)
注意不可变性
BigDecimal 是不可变类,abs() 不会改变原始实例,必须用变量接收结果:
bigNum.abs(); // 结果被丢弃,bigNum 本身没变
BigDecimal absNum = bigNum.abs(); // 显式赋值
与 scale 和 roundingMode 无关
abs() 只改变符号位,不调整精度或舍入。如果需要同时控制小数位数,需额外调用 setScale():
-
new BigDecimal("-12.345").abs().setScale(2, RoundingMode.HALF_UP)→12.35
和 Math.abs 的区别
不要混淆:Math.abs() 是针对基本类型(如 int、double)的静态方法,不能用于 BigDecimal;必须用对象自身的 .abs() 实例方法。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











