写bug的小杨

导航

BigDecimal、double

BigDecimal篇:

 

1.String转BigDecimal

String s1="123.45";

BigDecimal bg=new BigDecimal(s1);

2. 解决double相加的精度问题,要用BigDecimal

public static double add(double v1, double v2)
    {
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.add(b2).doubleValue();
    }

  

Double a=BigDecimalUtils.format(b).doubleValue();

   

3.加减乘除
bignum3 =  bignum1.add(bignum2);      
bignum3 = bignum1.subtract(bignum2);
bignum3 = bignum1.multiply(bignum2); 
bignum3 = bignum1.divide(bignum2); 

  

4.比大小

//前提为a、b均不能为null
if(a.compareTo(b) == -1){
    System.out.println("a小于b");
}
 
if(a.compareTo(b) == 0){
    System.out.println("a等于b");
}
 
if(a.compareTo(b) == 1){
    System.out.println("a大于b");
}
 
if(a.compareTo(b) > -1){
    System.out.println("a大于等于b");
}
 
if(a.compareTo(b) < 1){
    System.out.println("a小于等于b");
}

 

5.等于0

if(num.equals(BigDecimal.ZERO)){ }

 

 

6.转换成类型

toString()                将BigDecimal对象的数值转换成字符串。 
doubleValue()          将BigDecimal对象中的值以双精度数返回。 
floatValue()             将BigDecimal对象中的值以单精度数返回。 
longValue()             将BigDecimal对象中的值以长整数返回。 
intValue()               将BigDecimal对象中的值以整数返回。

 

6.保留两位小数处理

//第一种方法:保留两位小数
double db = bigDecimalTwo.setScale(2, RoundingMode.HALF_UP).doubleValue();
System.out.println(db);
 
// 第二种方法:保留两位小数
DecimalFormat df = new DecimalFormat("#.00");
df.format(bigDecimalTwo);

  

 

----------------------------------------分割线---------------------------------------------------------------------------

double篇:

 double的比大小,判是否等于0都会有精度问题

要用BigDecimal来处理


posted on 2020-08-28 12:23  迷途的小狗  阅读(227)  评论(0编辑  收藏  举报