37_Java中的浮点数精确运算

java中的BigDemcimal

用于小数的精确运算

构造方法:

​ BigDecimal(String val)

四则运算:

​ add(BigDecimal b):加法

​ subtract(BigDecimal b):减法

​ multiply(BigDecimal b):乘法

​ divide(BigDecimal b):除法

参考代码:

package com.itheima;

import java.math.BigDecimal;

/*
    基本使用:用于小数的精确计算
 */
public class BigDecimalDemo01 {
    public static void main(String[] args) {
        //double、float只是用于科学计算,但是不够精确
        System.out.println(0.1 + 0.2);  //0.3
        System.out.println(0.1 - 0.2);  //-0.1
        System.out.println(0.1 * 0.2);  //0.02
        System.out.println(0.1 / 0.2);  //0.5

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

        //使用BigDecimal类解决
        BigDecimal bd1 = new BigDecimal("0.1");
        BigDecimal bd2 = new BigDecimal("0.2");
        System.out.println(bd1.add(bd2));
        System.out.println(bd1.subtract(bd2));
        System.out.println(bd1.multiply(bd2));
        System.out.println(bd1.divide(bd2));
    }
}

除法运算遇到除不尽时:

​ public BigDecimal divide(另一个BigDecimal对象,精确几位,舍人模式)

​ RoundingMode.UP:进一法

​ RoundingMode.FLOOR:去尾法

​ ROundingMode.HALF_UP:四舍五入

参考代码:

package com.itheima;

import java.math.BigDecimal;
import java.math.RoundingMode;

/*
    除法运算:
		public BigDecimal divide(另一个BigDecimal对象,精确几位,舍人模式)
		RoundingMode.UP:进一法
		RoundingMode.FLOOR:去尾法
		RoundingMode.HALF_UP:四舍五入
 */
public class BigDecimalDemo02 {
    public static void main(String[] args) {
        //使用BigDecimal类解决
        BigDecimal bd1 = new BigDecimal("10.0");
        BigDecimal bd2 = new BigDecimal("3.0");

//        System.out.println(bd1.divide(bd2));  //除不尽

        /*
            参数1:表示参与计算的BigDecimal对象
            参数2:表示小数点后面精确多少位
            参数3:舍入模式
         */

        System.out.println(bd1.divide(bd2, 2, RoundingMode.UP));
        System.out.println(bd1.divide(bd2, 2, RoundingMode.FLOOR));
        System.out.println(bd1.divide(bd2, 2, RoundingMode.HALF_UP));
    }
}
posted @ 2023-01-07 10:17  如此而已~~~  阅读(88)  评论(0编辑  收藏  举报