BigDecimal类

BigDecimal类

package inner;

public class Demo07 {
    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
    }
}

很多实际应用中需要精确运算,而double是近似值存储,不再符合要求,需要借助BigDecimal。

  • 位置:java.math包中。
  • 作用:精确计算浮点数。
  • 创建方式:BigDecimal bd=new BigDecimal("1.0")。
package inner;

import java.math.BigDecimal;

public class Demo07 {
    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
        BigDecimal bd1=new BigDecimal("1.0");
        BigDecimal bd2=new BigDecimal("0.9");
        //类中做运算不能再用运算符,要调用subtract 减法
        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("10")
                .divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP);//四舍五入
        System.out.println(r5);//3.33
    }
}

除法:divide(BigDecimal bd,int scal,RoundingMode mode)

参数scal:指定精确到小数点后几位。

参数mode:

  • 指定小数部分的取舍模式,通常采用四舍五入的模式。
  • 取值为BigDecimal.ROUND_HALF_UP。
posted @ 2023-05-25 20:31  努力的小L  阅读(12)  评论(0)    收藏  举报