BigDecimal讲解

发布于:2023-01-05 ⋅ 阅读:(514) ⋅ 点赞:(0)

为什么要用BigDecimal

  • 原因很简单,因为像一些精准的数字基本类型没有办法满足

代码1

//double取近似值
        double num1 = 1.0;
        double num2 = 0.9;
        System.out.println((num1-num2));//0.09999999999999998
  • 按照正常思维,1减去0.9应该是0.1才对,但是这里double结果却输出了一个相近的近似值
  • 所以我们可以发现double类型不适合一些精准的数据计算,例如银行的计算
  • 所以我们就需要用到BigDecimal这个类的算法

BigDecimal

  • 位置:java.math包下
  • 作用:精准计算浮点数
  • 创建方式:Bigdecimal name = new BigDecimal(“1.0”) (注意是字符串类型,因为BigDecimal会使用一些算法让他转换为数字)
  • 方法:add(name)//加
  • subtract(name)//减
  • multiply(name)//乘
  • devide(name)//除
    注意,如果不想一开始就创建数字,就必须在式子中实例化这个东西,等下会看到
package blogtest.oop2.bigdecimal;



import java.math.BigDecimal;

public class Demo01 {
    public static void main(String[] args) {
        //double取近似值
        double num1 = 1.0;
        double num2 = 0.9;
        System.out.println((num1-num2));
        //BigDecimal
        BigDecimal number1 = new BigDecimal("1.0");
        BigDecimal number2 = new BigDecimal("0.9");

        //加法 add()
        BigDecimal result1 = number1.add(number2);
        System.out.println(result1);//1.9
        //减法
        BigDecimal result2 = number1.subtract(number2);
        System.out.println(result2);//0.1
        //乘法
        BigDecimal result3 = number1.multiply(number2);
        System.out.println(result3);//0.90
        //除法
        BigDecimal result4 = (new BigDecimal("1.4")
                .subtract(new BigDecimal("0.9")))
                .divide(new BigDecimal("2"));//0.25
        System.out.println(result4);

        //除法拓展(四舍五入)
        BigDecimal result5 = new BigDecimal("10").divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP);
        System.out.println(result5);//3.33


        System.out.println("------------------------------");
        System.out.println(new BigDecimal("0.5").subtract(new BigDecimal("0.25")));//0.25
        System.out.println((new BigDecimal("1.4").subtract(new BigDecimal("0.2")).divide(new BigDecimal("2"))));//0.6
    }
}
  • 如图所示,加减乘没什么,在除法这里,我们是在式子中进行实例化,最后再输出
  • 还有下面的四舍五入,因为10除以3除不尽所以需要用到四舍五入的方法 2代表的是小数后保留几位,然后我们还需调用BigDecimal里面的四舍五入方法 ROUND_HALF_UP,然后输出

总结

  • BigDecimal是用来计算一些精确的数字,例如银行中的金额,利息等等

网站公告

今日签到

点亮在社区的每一天
去签到