浅谈BigDecimal
一、用处:主要用于精度要求高的场景中,比如:金融,支付、、、、、、(通俗地说,就是涉及money的时候用的较多)
二、操作:加减乘除不再是基本类型的 + - * /
这里也容易理解,因为BigDecimal不是基本数据类型,需要调用相应的方法进行数据操作。
三、牛刀小试
①:创建 BigDecimal 对象
BigDecimal BigDecimal(String s); //超常用(强烈推荐)
static BigDecimal valueOf(double d); //一般
BigDecimal BigDecimal(double d); //杜绝使用
@Test
public void test01() {
double d = 0.1122;
System.out.println(new BigDecimal(d + ""));
System.out.println(BigDecimal.valueOf(d));
System.out.println(new BigDecimal(d));
}
结果:
这下明白了吧!
②:精度
@Test
public void test01() {
BigDecimal b = new BigDecimal("1.1514");
System.out.println(b); // 1.1514
// 四舍五入
b.setScale(2, BigDecimal.ROUND_HALF_UP); // 1.15
b.setScale(1, BigDecimal.ROUND_HALF_UP); // 1.2
// 大于5进位,小于等于5舍弃
b.setScale(1, BigDecimal.ROUND_HALF_DOWN); // 1.2
b.setScale(3, BigDecimal.ROUND_HALF_DOWN); // 1.151
// 进位与舍位
b.setScale(1, BigDecimal.ROUND_UP); // 1.2 (四舍五入进位)
b.setScale(1, BigDecimal.ROUND_DOWN); // 1.1 (直接舍弃多为的小数位)
}
③:运算
b1, b2 都为 Bigdecimal对象
加:b1.add(b2)
减:b1.subtract(b2)
乘:b1.multiply(b2)
除:b1.div(b2)