BigDecimal的使用

BigDecimal用于解决Java浮点数计算精度问题,提供加、减、乘、除等方法,支持MathContext设定精度和舍入模式。使用时注意参数类型转换,通常通过构造方法转换为BigDecimal。

BigDecimal主要是处理Java浮点数计算精度丢失的问题.

1. 方法介绍
加、减、乘法的方法类似,区别于方法名。

-加法
BigDecimal add(BigDecimal augend)
BigDecimal add(BigDecimal augend, MathContext mc)

-减法
BigDecimal subtract(BigDecimal subtrahend)
BigDecimal subtract(BigDecimal subtrahend, MathContext mc)

-乘法:
BigDecimal multiply(BigDecimal multiplicand)
BigDecimal multiply(BigDecimal multiplicand, MathContext mc)

:关于MathContext , 这个参数主要用于设定舍入模式、以及精度.

-除法:
有6个方法,常用的为
BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)

2.使用方法注意事项
1).方法操作的参数都是BigDecimal类型
2).将其他类型的参数转为BigDecimal类型,BigDecimal(String val)
构造方法是首选。

    public void test1(){
        BigDecimal b1 = new BigDecimal(1.6);
        BigDecimal b2 = new BigDecimal(1.5);
        System.out.println(b1.add(b2));
    }
    执行结果:3.100000000000000088817841970012523233890533447265625
public void test2(){
        BigDecimal b1 = new BigDecimal("1.6");
        BigDecimal b2 = new BigDecimal("1.5");
        System.out.println(b1.add(b2));
    }
    执行结果:3.1

3.使用示例

(1). 设置小数位数

 public void test4(){
        BigDecimal b1 = new BigDecimal("9.999");
        BigDecimal b2 = new BigDecimal("10");
        //不使用参数
        System.out.println(b1.divide(b2));
    }
   输出:0.9999

    public void test4(){
        BigDecimal b1 = new BigDecimal("9.999");
        BigDecimal b2 = new BigDecimal("10");
        //保留3位小数
        //四舍五入
        System.out.println(b1.divide(b2,3,BigDecimal.ROUND_HALF_UP));
        输出:1.000
    }

(2). 设置返回总位数

    public void test3(){
       //总位数:从结果的最左边非零数字开始算起
       //设置返回总位数为3
       //四舍五入
        MathContext mc = new MathContext(3, RoundingMode.HALF_UP); // 3 precision

        BigDecimal b1 = new BigDecimal("9.999");
        BigDecimal b2 = new BigDecimal("10");
        System.out.println(b1.divide(b2, mc));
        输出结果:1.00
    }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值