1. 程式人生 > >踩坑經歷(一)BigDecimal如何比較大小

踩坑經歷(一)BigDecimal如何比較大小

案例

 BigDecimal a=BigDecimal.valueOf(1.0);
 BigDecimal b=BigDecimal.valueOf(1.000);

比較大小

 if(a.compareTo(b)==0)

JDK原始碼

   public int compareTo(BigDecimal val) {
        // Quick path for equal scale and non-inflated case.
        if (scale == val.scale) {
            long xs = intCompact;
            long ys = val.intCompact;
            if (xs != INFLATED && ys != INFLATED)
                return xs != ys ? ((xs > ys) ? 1 : -1) : 0;
        }
        int xsign = this.signum();
        int ysign = val.signum();
        if (xsign != ysign)
            return (xsign > ysign) ? 1 : -1;
        if (xsign == 0)
            return 0;
        int cmp = compareMagnitude(val);
        return (xsign > 0) ? cmp : -cmp;
    }