bigdecimal比较大小
时间:2016-11-13 来源:发票查询
这个类是java里精确计算的类
1 比较对象是否相等
一般的对象用equals,但是BigDecimal比较特殊,举个例子:
BigDecimal a=BigDecimal.valueOf(1.0);
BigDecimal b=BigDecimal.valueOf(1.000);
在现实中这两个数字是相等的,但是问题来来了
a.equals(b)结果是false;怎么不相等了呢?这个问题我也不知道
解决办法:
if(a.compareTo(b)==0)结果是true
public int compareTo(BigDecimal val)
结果是-1 小于
0 等于
1 大于
if(a.compareTo(b) == -1){
a
}
if(a.compareTo(b)==0){
a=b;
}
if(a.compareTo(b)==1){
a>b;
}
public static MathContext mc = new MathContext();
public static BigDecimal add(BigDecimal a1,BigDecimal a2){
a1=null2Zero(a1);
a2=null2Zero(a2);
return a1.add(a2,mc);
}
public static BigDecimal null2Zero(BigDecimal arg){
return arg==null ? BigDecimal.ZERO : arg ;
}
1 比较对象是否相等
一般的对象用equals,但是BigDecimal比较特殊,举个例子:
BigDecimal a=BigDecimal.valueOf(1.0);
BigDecimal b=BigDecimal.valueOf(1.000);
在现实中这两个数字是相等的,但是问题来来了
a.equals(b)结果是false;怎么不相等了呢?这个问题我也不知道
解决办法:
if(a.compareTo(b)==0)结果是true
public int compareTo(BigDecimal val)
结果是-1 小于
0 等于
1 大于
if(a.compareTo(b) == -1){
a
}
if(a.compareTo(b)==0){
a=b;
}
if(a.compareTo(b)==1){
a>b;
}
public static MathContext mc = new MathContext();
public static BigDecimal add(BigDecimal a1,BigDecimal a2){
a1=null2Zero(a1);
a2=null2Zero(a2);
return a1.add(a2,mc);
}
public static BigDecimal null2Zero(BigDecimal arg){
return arg==null ? BigDecimal.ZERO : arg ;
}