Java中BigDecimal比较

对于BigDecimal的零值判断

可以有三种办法

1、==

2、equals 不但值得大小要相等,保留位数也要相等

3、compareTo 比较是否等于0,返回true则等于0,返回false,则不等于0


例子:

        BigDecimal b1 = new BigDecimal("0");
        BigDecimal b2 = new BigDecimal("0.0");
        BigDecimal b3 = BigDecimal.ZERO;
        System.out.println(b1.equals(b2));
        System.out.println(b1.equals(b3));
        System.out.println(b2.equals(b3));
        System.out.println(b1.compareTo(b2));
        System.out.println(b1.compareTo(b3));
        System.out.println(b3.compareTo(b1));


结果:

false
true
false
0
0
0

所以:

if(b==null||BigDecimal.ZERO.compareTo(b)==0){
doSomething…
}


查看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;
    }

int i=big_decimal.compareTo(BigDecimal.Zero); //和0,Zero比较
if(i==0) //等于
if(i==1) //大于
if(i==-1) //小于

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaBigDecimal类提供了一种方法来比较两个BigDecimal对象的大小。我们可以使用compareTo()方法来比较BigDecimal对象的大小。该方法返回一个整数值,该值表示当前对象与指定对象之间的大小关系。具体而言,如果当前对象小于指定对象,则返回负整数;如果当前对象等于指定对象,则返回0;如果当前对象大于指定对象,则返回正整数。 以下是一个示例代码,展示了如何使用compareTo()方法来比较BigDecimal对象的大小: ``` import java.math.BigDecimal; public class BigDecimalComparisonExample { public static void main(String[] args) { BigDecimal num1 = new BigDecimal("10.5"); BigDecimal num2 = new BigDecimal("20.5"); BigDecimal num3 = new BigDecimal("10.5"); //比较num1和num2 int result1 = num1.compareTo(num2); System.out.println("num1与num2的比较结果为:" + result1); //比较num1和num3 int result2 = num1.compareTo(num3); System.out.println("num1与num3的比较结果为:" + result2); //比较num2和num3 int result3 = num2.compareTo(num3); System.out.println("num2与num3的比较结果为:" + result3); } } ``` 运行以上代码,输出结果如下: ``` num1与num2的比较结果为:-1 num1与num3的比较结果为:0 num2与num3的比较结果为:1 ``` 以上代码,我们创建了三个BigDecimal对象:num1、num2和num3。然后,我们使用compareTo()方法来比较它们之间的大小关系,并输出比较结果。根据输出结果可以看出,num1小于num2,num1等于num3,num2大于num3。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值