RoundingMode枚举
CEILING

向正舍入,如:1.1取2,-1.8取-1

等价枚举: BigDecimal.ROUND_CEILING
DOWN

不舍入,如:1.1取1,-1.8取-1

等价枚举: BigDecimal.ROUND_DOWN
FLOOR

向负舍入,如:1.8取1,-1.1取-2

等价枚举: BigDecimal.ROUND_FLOOR
HALF_DOWN

五舍六入

等价枚举: BigDecimal.ROUND_HALF_DWON
HALF_EVEN

整数位若是奇数则四舍五入,若是偶数则五舍六入

等价枚举: BigDecimal.ROUND_HALF_EVEN
HALF_UP

四舍五入

等价枚举: BigDecimal.ROUND_HALF_UP
UNNECESSARY

如果设保留两位,但传入数值是三位以上的小数,则抛出 ArithmeticException 异常

等价枚举: BigDecimal.ROUND_UNNECESSARY
UP

大于0进位,保留两位小数 例:3.333结果3.34,-3.333结果-3.34

等价枚举: BigDecimal.ROUND_UP

常用方法
返回类型 方法描述
BigDecimal add(BigDecimal augend)

相加
BigDecimal subtract(BigDecimal)

相减
BigDecimal multiply(BigDecimal)

相乘
BigDecimal divide(BigDecimal)

相除
String toString()

数值转换成字符串
double doubleValue()

值以双精度数返回
float floatValue()

值以单精度数返回
long longValue()

值以长整数返回
int intValue()

值以整数返回
BigDecimal setScale(int newScale)

保留指定位小数
BigDecimal setScale(int newScale, int roundingMode)

指定模式保留指定位小数

示例:

BigDecimal bd = new BigDecimal("22"); //整型构造

BigDecimal bd0 = new BigDecimal(Double.toString(1.11111)); //双精度构造

注:凡数值型,必须使用Double.toString()、Long.toString()等转换为字符串,直接转换会出错


bd0 = bd.setScale(2, RoundingMode.HEAFL_UP); //保留3位小数,且四舍五入

BigDecimal bd1 = bd.add(bd0); //加法