BigDecimal的使用

package com.common.string;

import java.math.BigDecimal;

/**
 * @ClassName: Demo5
 * @Author: 南冥有猫不须铭
 * @Date: 2021/6/28-15:19
 * @Description: BigDecimal的使用
 */
public class Demo5 {
    public static void main(String[] args) {
        double d1 = 1.0;    //double类型 和 float类型在内存中存储的是一个近似值,经过计算后得出的结果有误差
        double d2 = 0.9;
        System.out.println(d1-d2);//0.09999999999999998 (不是1.0-0.9=0.1)

        //面试题
        double result = (1.4-0.5)/0.9;
        System.out.println(result);//0.9999999999999999 (不是1)
        
        //BigDecimal,大的浮点数精确计算
        BigDecimal bd1 = new BigDecimal("1.0");//这里括号里填的一定要是字符串,否则数据可能还是近似值
        BigDecimal bd2 = new BigDecimal("0.9");
        //减法
        BigDecimal r1 = bd1.subtract(bd2);//减法:r1=bd1-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  (1.4-0.5)/0.9=1
        //除法除不尽的情况
        BigDecimal r5 = new BigDecimal("10").divide(new BigDecimal("3"),2,BigDecimal.ROUND_UP);//10除以3,保留两位小数,四舍五入
        System.out.println(r5);//3.34   除不尽,会报异常 ArithmeticException,但是选择保留小数和四舍五入后可以正常计算
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值