zoukankan      html  css  js  c++  java
  • BigDecimal 基本用法

    一、加减乘除

    BigDecimal bignum1 = new BigDecimal("10");  
    BigDecimal bignum2 = new BigDecimal("5");  
    BigDecimal bignum3 = null;  
      
    //加法  
    bignum3 =  bignum1.add(bignum2);       
    System.out.println("和 是:" + bignum3);  
      
    //减法  
    bignum3 = bignum1.subtract(bignum2);  
    System.out.println("差  是:" + bignum3);  
      
    //乘法  
    bignum3 = bignum1.multiply(bignum2);  
    System.out.println("积  是:" + bignum3);  
      
    //除法  
    bignum3 = bignum1.divide(bignum2);  
    System.out.println("商  是:" + bignum3);
    
    //除法(四舍五入)
    bignum3 = bignum1.divide(bignum2, 2, BigDecimal.ROUND_HALF_UP);  

    解释一下divide

    pubilc BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)

    A、scale指的是你小数点后的位数。比如123.456则scale就是3。

    B、RoundingMode如下:
    1、ROUND_UP
    舍入远离零的舍入模式。
    在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数字加1)。
    注意,此舍入模式始终不会减少计算值的大小。

    2、ROUND_DOWN
    接近零的舍入模式。
    在丢弃某部分之前始终不增加数字(从不对舍弃部分前面的数字加1,即截短)。
    注意,此舍入模式始终不会增加计算值的大小。

    3、ROUND_CEILING
    接近正无穷大的舍入模式。
    如果 BigDecimal 为正,则舍入行为与 ROUND_UP 相同;
    如果为负,则舍入行为与 ROUND_DOWN 相同。
    注意,此舍入模式始终不会减少计算值。

    4、ROUND_FLOOR
    接近负无穷大的舍入模式。
    如果 BigDecimal 为正,则舍入行为与 ROUND_DOWN 相同;
    如果为负,则舍入行为与 ROUND_UP 相同。
    注意,此舍入模式始终不会增加计算值。

    5、ROUND_HALF_UP
    向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式。
    如果舍弃部分 >= 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同。
    注意,这是我们大多数人在小学时就学过的舍入模式(四舍五入)。

    6、ROUND_HALF_DOWN
    向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为上舍入的舍入模式。
    如果舍弃部分 > 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同(五舍六入)。

    7、ROUND_HALF_EVEN(银行家舍入法)
    向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。
    如果舍弃部分左边的数字为奇数,则舍入行为与 ROUND_HALF_UP 相同;
    如果为偶数,则舍入行为与 ROUND_HALF_DOWN 相同。
    注意,在重复进行一系列计算时,此舍入模式可以将累加错误减到最小。
    此舍入模式也称为“银行家舍入法”,主要在美国使用。四舍六入,五分两种情况。
    如果前一位为奇数,则入位,否则舍去。
    以下例子为保留小数点1位,那么这种舍入方式下的结果。
    1.15>1.2 1.25>1.2

    8、ROUND_UNNECESSARY
    断言请求的操作具有精确的结果,因此不需要舍入。
    如果对获得精确结果的操作指定此舍入模式,则抛出ArithmeticException。

    二、比较大小

    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");
    }

    三、保留小数

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

    (待续)

  • 相关阅读:
    联想 Vibe Shot(Z90-3) 免recovery 获取ROOT权限 救砖 VIBEUI V3.1_1625
    联想 Z5S(L78071)免解锁BL 免rec 保留数据 ROOT Magisk Xposed 救砖 ZUI 10.5.370
    联想 Z5(L78011) 免解锁BL 免rec 保留数据 ROOT Magisk Xposed 救砖 ZUI 10.5.254
    联想 S5 Pro(L78041)免解锁BL 免rec 保留数据 ROOT Magisk Xposed 救砖 ZUI 5.0.123
    第二阶段 冲刺八
    第二阶段 冲刺七
    第二阶段 冲刺六
    第二阶段 冲刺五
    代码大全阅读笔记03
    学习进度十二
  • 原文地址:https://www.cnblogs.com/hunttown/p/12714951.html
Copyright © 2011-2022 走看看