BigDecimal(加add,减subtract,乘multiply,除divide)

  • 很多实际应用中需要精确运算,而double是近似值存储,不再符合要求,需要借助BigDecimal
package com.jacyzhu.bigdecimal;

public class Dem01 {
    public static void main(String[] args) {
        double d1 = 1.0;
        double d2 = 0.9;
        System.out.println(d1-d2); // 0.09999999999999998

        // 面试题
        double result = (1.4-0.5)/0.9;
        System.out.println(result); // 0.9999999999999999
    }
}

BigDecimal

  • 位置:java,math包中
  • 作用:精确计算浮点数
  • 创建方式:BigDecimal bd = new BigDecimal("1.0");
  • 注意:
    • 除法:divide(BigDecimal bd, int scal, RoundingMode mode)
    • 参数scal:指定精确到小数点后几位
    • 参数mode:指定小数部分的取舍模式,通常采用四舍五入的模式。取值为BigDecimal.ROUND_HALF_UP
package com.jacyzhu.bigdecimal;

import java.math.BigDecimal;

public class Demo02 {
    public static void main(String[] args) {
        // BigDecimal,大的浮点数精确计算
        BigDecimal bd1 = new BigDecimal("1.0");
        BigDecimal bd2 = new BigDecimal("0.9");

        // 减法
        BigDecimal r1 = bd1.subtract(bd2);
        System.out.println(r1); // 0.1

        // 加法
        BigDecimal r2 = bd1.add(bd2);
        System.out.println(r2); // 1.9

        // 乘法
        BigDecimal r3 = bd1.multiply(bd2);
        System.out.println(r3); // 0.90

        // 除法
        BigDecimal r4 = new BigDecimal("1.4").subtract(new BigDecimal("0.5")).divide(new BigDecimal("0.9"));
        System.out.println(r4); // 1

        BigDecimal r5 = new BigDecimal("20").divide(new BigDecimal("3"), 2, BigDecimal.ROUND_HALF_UP); // 四舍五入,保留两位小数
        System.out.println(r5); // 6.67
    }
}
运行结果:
0.1
1.9
0.90
1
6.67
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值