BigDecimal用法

BigDecimal基本用法:

 

import java.math.BigDecimal;

/**
 * Created by gailun on 2018/7/12.
 */
public class Demo1 {
    public static void main(String[] args) {
        BigDecimal bigDecimal = new BigDecimal(54.568);
        BigDecimal bigDecimal1 = new BigDecimal(30.151);
        BigDecimal bigDecimal2 = new BigDecimal(54.565);
        BigDecimal bigDecimal6 = new BigDecimal("3");

        // 1.两个BigDecimal相加
        // 1.1 相加
        BigDecimal add = bigDecimal.add(bigDecimal1);
        System.out.println(add);

        // 1.2 相加保留两位小数
        // 1.2.1 相加保留两位小数, 直接删除多余的小数位, 如84.719会变成84.71
        BigDecimal add1 = bigDecimal.add(bigDecimal1).setScale(2, BigDecimal.ROUND_DOWN);
        System.out.println(add1);

        // 1.2.2 进位处理, 84.719变成84.72
        BigDecimal add2 = bigDecimal.add(bigDecimal1).setScale(2,BigDecimal.ROUND_UP);
        System.out.println(add2);

        // 1.2.3 四舍五入, 84.719变成84.72
        BigDecimal add3 = bigDecimal.add(bigDecimal1).setScale(2, BigDecimal.ROUND_HALF_UP);
        System.out.println(add3);

        // 1.2.4 四舍五入, 如果是5则向下舍, 54.565变成54.56
        BigDecimal add4 = bigDecimal.add(bigDecimal1.setScale(2, BigDecimal.ROUND_HALF_DOWN));
        System.out.println(add4);
        BigDecimal bigDecimal3 = bigDecimal2.setScale(2, BigDecimal.ROUND_HALF_DOWN);
        System.out.println(bigDecimal3);

        System.out.println("=========================");

        // 2. 两个BigDecimal相减
        // 2.1 相减
        BigDecimal subtract = bigDecimal.subtract(bigDecimal1);
        System.out.println(subtract);

        // 2.2 相减保留两位小数
        // 2.2.1 相减保留两位小数, 直接删除多余的小数位, 如24.417会变成24.41
        BigDecimal subtract1 = bigDecimal.subtract(bigDecimal1).setScale(2, BigDecimal.ROUND_DOWN);
        System.out.println(subtract1);

        // 2.2.2 进位处理, 24.417变成24.42
        BigDecimal subtract2 = bigDecimal.subtract(bigDecimal1).setScale(2, BigDecimal.ROUND_UP);
        System.out.println(subtract2);

        // 2.2.3 四舍五入, 24.417变成24.42
        BigDecimal subtract3 = bigDecimal.subtract(bigDecimal1).setScale(2, BigDecimal.ROUND_HALF_UP);
        System.out.println(subtract3);

        System.out.println("====================");

        // 3. 两个BigDecimal相乘
        // 3.1 相乘
        BigDecimal multiply = bigDecimal.multiply(bigDecimal1);
        System.out.println(multiply);

        // 3.2 相乘保留两位小数
        // 3.2.1 相乘保留两位小数, 直接删除多余的小数位, 如1645.279会变成1645.27
        BigDecimal multiply1 = bigDecimal.multiply(bigDecimal1).setScale(2, BigDecimal.ROUND_DOWN);
        System.out.println(multiply1);

        // 3.2.2 进位处理, 1645.279会变成1645.27
        BigDecimal multiply2 = bigDecimal.multiply(bigDecimal1).setScale(2, BigDecimal.ROUND_UP);
        System.out.println(multiply2);

        // 3.2.3 四舍五入, 1645.279会变成1645.27
        BigDecimal multiply3 = bigDecimal.multiply(bigDecimal1).setScale(2, BigDecimal.ROUND_HALF_UP);
        System.out.println(multiply3);

        System.out.println("==============");
        // 4 两个BigDecimal相除
        // 4.1 相除, 保留两位小数,  18.189会变为18.19
        BigDecimal divide = bigDecimal.divide(bigDecimal6,2,BigDecimal.ROUND_HALF_UP);
        System.out.println(divide);

        // 4.2 相除, 保留三位小数 18.189
        BigDecimal divide1 = bigDecimal.divide(bigDecimal6,3,BigDecimal.ROUND_HALF_UP);
        System.out.println(divide1);

        // 4.2 相除,保留两位小数,18.189会变为18.18
        BigDecimal divide2 = bigDecimal.divide(bigDecimal6, 2, BigDecimal.ROUND_DOWN);
        System.out.println(divide2);
        
    }
}

执行结果:

(1) 问题
String string = null;
BigDecimal b1 = new BigDecimal(string);
BigDecimal b2 = new BigDecimal("9");

BigDecimal a = b1.add(b2);
System.out.println(a);

执行时报以下异常:

 

DecimalFormat 数字格式化

Integer i = 1;
DecimalFormat decimalFormat = new DecimalFormat("000");
String format = decimalFormat.format(i);
System.out.println(format);

执行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值