bigdecimal判断是否为零(compareTo比较大小)

您所在的位置:网站首页 bigdecimal判断整数 bigdecimal判断是否为零(compareTo比较大小)

bigdecimal判断是否为零(compareTo比较大小)

2024-07-10 19:12| 来源: 网络整理| 查看: 265

一、bigdecimal判断是否为零

1.判断Bigdecimal类型是否等于0的方法b.equals(BigDecimal.ZERO); 用equals方法和BigDecimal.ZERO进行比较。 2.上面判断是否等于零存在的问题: 我们来查看源代码: 在这里插入图片描述 Bigdecimal的equals方法不仅仅比较值的大小是否相等,首先比较的是scale(scale是bigdecimal的保留小数点位数,比如 new Bigdecimal(“1.001”),scale为3),也就是说,不但值得大小要相等,保留位数也要相等,equals才能返回true。 Bigdecimal b = new Bigdecimal(“0”) 和 Bigdecimal c = new Bigdecimal(“0.0”),用equals比较,返回就是false。 Bigdecimal.ZERO的scale为0。 所以,用equals方法要注意这一点。 3.我们还可以用一种方式判断Bigdecimal类型的值是否为0: b.compareTo(BigDecimal.ZERO)==0,可以比较是否等于0,返回true则等于0,返回false,则不等于0

二、Bigdecimal的compareTo方法使用: public static void main(String[] args) { BigDecimal bnum1, bnum2; bnum1 = new BigDecimal("10"); bnum2 = new BigDecimal("20"); int res = bnum1.compareTo(bnum2); String str1 = "两个数相等"; String str2 = "第一个数更大"; String str3 = "第二个数更大"; if( res == 0 ) System.out.println( str1 ); else if( res == 1 ) System.out.println( str2 ); else if( res == -1 ) System.out.println( str3 ); } }

为什么比较返回值是0,-1和1呢? 我们去看看源代码! 在这里插入图片描述 根据源码中的三元运算符可以发现: 情况1. 如果xs等于ys,则返回0。 情况2. 如果xs不等于ys,则会执行另外一个三元运算符((xs > ys) ? 1 : -1) 这时候就会比较 xs 和 ys: xs > ys 返回 1, xs < ys 返回 -1。 因此得到结论!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3