BigDecimal介绍
BigDecimal
,相信对于很多人来说都不陌生,很多人都知道他的用法,这是一种java.math包中提供的一种可以用来进行精确运算的类型。
很多人都知道,在进行金额表示、金额计算等场景,不能使用double、float等类型,而是要使用对精度支持的更好的BigDecimal。
所以,很多支付、电商、金融等业务中,BigDecimal的使用非常频繁。而且不得不说这是一个非常好用的类,其内部自带了很多方法,如加,减,乘,除等运算方法都是可以直接调用的。
除了需要用BigDecimal表示数字和进行数字运算以外,代码中还经常需要对于数字进行相等判断。
《阿里巴巴Java开发手册》的说明
详细说明
如下代码就是这样的低级错误:
错误一 ==
if(bigDecimal == bigDecimal1){
// 两个数相等
}
因为BigDecimal是对象,所以不能用==来判断两个数字的值是否相等。
错误二 equals()
但是下面的代码呢?
if(bigDecimal.equals(bigDecimal1)){
// 两个数相等
}
很失望的告诉你们,得到的结果和你们预想的不一样
简单测试
先来做个实验测试一下:
BigDecimal bigDecimal = new BigDecimal(1);
BigDecimal bigDecimal1 = new BigDecimal(1);
System.out.println(bigDecimal.equals(bigDecimal1));
BigDecimal bigDecimal2 = new BigDecimal(1);
BigDecimal bigDecimal3