BigDecimal之使用

212 阅读1分钟

每日小记:

由于在金融方面,需要对金钱进行精确计算,对于Double类型,当数值超过9999999时,会自动转换成科学记数法,可能会影响计算,所以,引入了BigDecimal进行精确计算;

BigDecimal对于加减乘除有自己的方法,在做除数运算时,可能会出现除不尽的情况,这个时候需要注意;

对于BigDecimal的构造方法,我们一般推荐使用参数为String的构造函数;

对于BigDecimal的比较,我们使用compareTo进行比较:

BigDecimal b = new BigDecimal("10");
BigDecimal c = new BigDecimal("-1");
BigDecimal d = BigDecimal.ZERO;
System.out.println(b.compareTo(BigDecimal.ZERO));  // 1
System.out.println(c.compareTo(BigDecimal.ZERO));  // -1
System.out.println(d.compareTo(BigDecimal.ZERO));  // 0

 大于的值为1,等于值为0,小于值为-1

在mybatis中使用的坑:

在数据库操作的mapper.xml文件里,判断某个BigDecimal字段是否有传入,不能使用!=''这种写法,因为mybatis会将该字段转换为String,当该字段传入的值为0时,mybatis会自动转换成null;