大小_bigdecimal比较

大小_bigdecimal比较BigDecimal是java.math包中提供的API类#####代码展示#####publicclassTest{publicstaticvoidmain(String[]args)throwsException{BigDecimala=newBigDecima

大家好,欢迎来到IT知识分享网。

BigDecimal是java.math包中提供的API类
#####代码展示#####
public class Test {
public static void main(String[] args) throws Exception {
BigDecimal a = new BigDecimal("0");
BigDecimal b = new BigDecimal("0.00");
BigDecimal c = new BigDecimal("0");
System.out.println(a.equals(b)); //false
System.out.println(a.equals(c)); //true
System.out.println(a.compareTo(b)==0); //true
}
}
BigDecimal类型的数据比较大小时应该使用compareTo方法
如果方法的调用方的值大于方法中参数值,即a>b,方法的返回结果是1;
如果方法的调用方的值小于方法中参数值,即a<b,方法的返回结果是-1;
如果方法的调用方的值等于方法中参数值,即a=b,方法的返回结果是0;
####BigDecimal类中的compareTo方法######
public int compareTo(BigDecimal val) {
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;
}
#####BigDecimal类中的equals方法#####
@Override
public boolean equals(Object x) {
if (!(x instanceof BigDecimal))
return false;
BigDecimal xDec = (BigDecimal) x;
if (x == this)
return true;
if (scale != xDec.scale)
return false;
long s = this.intCompact;
long xs = xDec.intCompact;
if (s != INFLATED) {
if (xs == INFLATED)
xs = compactValFor(xDec.intVal);
return xs == s;
} else if (xs != INFLATED)
return xs == compactValFor(this.intVal);

return this.inflated().equals(xDec.inflated());
}
BigDecimal类型的数据比较应使用compareTo方法,不应使用equal方法

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/28053.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信