BigDecimal加减乘除计算
add(BigDecimal value); //加法
subtract(BigDecimal value); //减法
multiply(BigDecimal value); //乘法
divide(BigDecimal value); //除法
BigDecimal a = new BigDecimal("5.5");
BigDecimal b = new BigDecimal("2.5");
System.out.println("a+b=" + a.add(b));
System.out.println("a-b=" + a.subtract(b));
System.out.println("a*b=" + a.multiply(b));
System.out.println("a的绝对值=" + a.abs());
// 保留两位小数
System.out.println("a%b=" + a.divide(b, 2, BigDecimal.ROUND_HALF_UP));
BigDecimal去掉小数点后的零
new BigDecimal("").stripTrailingZeros().toPlainString()
BigDecimal c = new BigDecimal("96.000");
System.out.println("c:" + c );
System.out.println("去掉小数点后的零:" + c.stripTrailingZeros().toPlainString());
BigDecimal 中的 divide
public BigDecimal divide(BigDecimal divisor,int scale, int roundingMode)
第一个参数是除数,第二个参数代表保留几位小数,第三个代表的是使用的模式。
BigDecimal.ROUND_DOWN:直接省略多余的小数,比如1.28如果保留1位小数,得到的就是1.2
BigDecimal.ROUND_UP:直接进位,比如1.21如果保留1位小数,得到的就是1.3
BigDecimal.ROUND_HALF_UP:四舍五入,2.35保留1位,变成2.4
BigDecimal.ROUND_HALF_DOWN:四舍五入,2.35保留1位,变成2.3 后边两种的区别就是如果保留的位数的后一位如果正好是5的时候,一个舍弃掉,一个进位。
2、BigDecimal.setScale()方法用于格式化小数点
setScale(1)表示保留一位小数,默认用四舍五入方式
setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3
setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4
setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35变成2.4
setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入,2.35变成2.3,如果是5则向下舍
BigDecimal大小比较
BigDecimal比较大小方法:
使用compareTo方法。
int flag = bigdemical1.compareTo(bigdemical2)
- flag = -1,表示bigdemical1小于bigdemical2;
- flag = 0,表示bigdemical1等于bigdemical2;
- flag = 1,表示bigdemical1大于bigdemical2;
实际应用中直接跟0比较就可以了,
- 大于0就是bigdemical大于bigdemical1
- 等于0就是bigdemical等于bigdemical1
- 小于0就是bigdemical小于bigdemical1