一,区别
因为BigDecimal是对象,所以不能用==来判断两个数字的值是否相等。那使用equals和compareTo这两个方法有啥区别呢???equals方法会比较两部分内容,分别是值(value)和精度(scale),而compareTo方法比较会忽略精度。
二,为什么BigDecimal精度不同
这个问题其实是比较复杂的,由于不是本文的重点,这里面就不过多介绍。大家感兴趣的话,可以在去看下BigDecimal构造函数的源码。
BigDecimal一共有以下4个构造方法:
BigDecimal(int)
BigDecimal(double)
BigDecimal(long)
BigDecimal(String)
以上四个方法,创建出来的的BigDecimal的精度是不同的。
三,equals比较代码截图
equals代码中比较了精度的代码
四,测试小案例
代码:
运行结果: