java中小数处理,bigDecimal类应用

2018-06-27 09:59:33来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

1、构造一个BigDecimal对象:

//创建一个BigDecimal对象,初始化必须使用字符串,因为用数值初始化会得到近似值,不准确
BigDecimal bigDecimalOne = new BigDecimal("1.232324");

//将浮点数装换成BigDecimal对象
double d = 1.3422424;
BigDecimal bigDecimalTwo =BigDecimal.valueOf(d);

 

2、BigDecimal成员方法:

//bigDecimalOne加上bigDecimalTwo,然后返回一个新对象
bigDecimalOne.add(bigDecimalTwo);

//bigDecimalOne减去bigDecimalTwo,然后返回一个新对象
bigDecimalOne.subtract(bigDecimalTwo);

//bigDecimalOne乘以bigDecimalTwo,然后返回一个新对象
bigDecimalOne.multiply(bigDecimalTwo);

//bigDecimalOne除以bigDecimalTwo,然后返回一个新对象
bigDecimalOne.divide(bigDecimalTwo);

 

3、BigDecimal对象转化成基本数据类型:

//BigDecimal对象的数值转换成对应的字符串
bigDecimalOne.toString();

//BigDecimal对返回double值
bigDecimalOne.doubleValue();

//BigDecimal对返回float
bigDecimalOne.floatValue();

//BigDecimal对返回long值
bigDecimalOne.longValue();

//BigDecimal对返回int值
bigDecimalOne.intValue();

 

4、BigDecimal工具类:

import java.math.BigDecimal;

public class BigDecimalUtil {

    private static final int DEF_DIV_SCALE = 10;

    private BigDecimalUtil(){}

    /**
     * 精准的加法运算
     * @param v1
     * @param v2
     * @return
     */
    public static double add(double v1,double v2){
        BigDecimal b1 = BigDecimal.valueOf(v1);
        BigDecimal b2 = BigDecimal.valueOf(v2);
        return b1.add(b2).doubleValue();
    }

    /**
     * 精确减法计算
     * @param v1
     * @param v2
     * @return
     */
    public static double sub(double v1,double v2){
        BigDecimal b1 = BigDecimal.valueOf(v1);
        BigDecimal b2 = BigDecimal.valueOf(v2);
        return b1.subtract(b2).doubleValue();
    }

    /**
     * 精确乘法计算
     * @param v1
     * @param v2
     * @return
     */
    public static double mul(double v1,double v2){
        BigDecimal b1 = BigDecimal.valueOf(v1);
        BigDecimal b2 = BigDecimal.valueOf(v2);
        return b1.multiply(b2).doubleValue();
    }

    /**
     * 精确除法计算
     * @param v1
     * @param v2
     * @return
     */
    public static double div(double v1,double v2){
        BigDecimal b1 = BigDecimal.valueOf(v1);
        BigDecimal b2 = BigDecimal.valueOf(v2);
        return b1.divide(b2,DEF_DIV_SCALE,BigDecimal.ROUND_HALF_UP).doubleValue();
    }


    public static void main(String[] args) {
        double d1 = 12.897;
        double d2 = 3.87;
        System.out.println(BigDecimalUtil.add(d1,d2));
        System.out.println(BigDecimalUtil.sub(d1, d2));
        System.out.println(BigDecimalUtil.mul(d1, d2));
        System.out.println(BigDecimalUtil.div(d1, d2));
    }
    
}

 

5、java中舍入方式:

     第一种方法:

//保留两位小数
double db = bigDecimalTwo.setScale(2, RoundingMode.HALF_UP).doubleValue();
System.out.println(db);

 

    第二种方法:

//保留两位小数
DecimalFormat df = new DecimalFormat("#.00");
df.format(bigDecimalTwo);

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:[ Java学习基础 ] Java的对象容器 -- 集合

下一篇:缓存与数据库的一致性