public static void main(String[] args) {
//equals()函数进行比较会对两个对象的数值和精度两方面进行比较
// 返回true/false
//compareTo()函数进行比较则会忽略精度只对两个对象的数值进行比较
// 返回0为相等,1为左边大,-1为右边大
BigDecimal a = new BigDecimal("0.100");
BigDecimal b = new BigDecimal("0.1");
System.out.println(a.equals(b)); //false
System.out.println(a.compareTo(b)); //true
BigDecimal c = new BigDecimal(0.1);
//0.1如果是以double类型构造的,那么返会的数值则会取他的近似值
//0.1的近似值是0.1000000000000000055511151231257827021181583404541015625
//精度为55
System.out.println(c); //0.1000000000000000055511151231257827021181583404541015625
BigDecimal d = new BigDecimal("0.1");
//0.1如果是以string类型构造的,那么返回的数值则会是准确的数值(0.1)
//因为构造内部是获取string的char数组然后循环拼接之类生成的吧
//(ps:这里是我瞎猜的, 里面代码长的不行200行不是人看到,也懒得debug-_-!!)
System.out.println(d); //0.1
System.out.println(c.equals(d)); //false
System.out.println(c.compareTo(d)); //false
//总结:在使用BigDecimal类型时需要保证值和精度都一致时可以用equals()
//如果只需要保证值相等那么建议使用compareTo
}