BigDecimal使用方法

文章目录

  • 引入
  • BigDecima
  • BigDecima的使用
  • 舍入模式
    • up
    • down
    • CEILING
    • FLOOR
    • half_UP
    • half_UP
  • BigDecimal存储原理
  • 总结

引入

知识引入:如下图

BigDecimal使用方法_第1张图片

0.266小数部分二进制需要55位存储,如果我们double接收那么将丢掉最后三位,所以我们在代码中进行小鼠的加减运算结果有时候并不是我们想要的

BigDecima

  • 用于小数的精确计算
  • 用来表示很大的小数
import java.math.BigDecimal;
import java.math.BigInteger;

public class BigDecimal1 {
    public static void main(String[] args) {
        
        
        //通过传递字符串表示的小数来创建对象
        BigDecimal bigDecimal=new BigDecimal("0.01");
        BigDecimal bigDecimal1=new BigDecimal("0.09");
        System.out.println(bigDecimal1);//0.01
        
        
        //通过静态方法来获取对象
        BigDecimal bigDecimal2=BigDecimal.valueOf(10);
        BigDecimal bigDecimal3=BigDecimal.valueOf(10);
        System.out.println(bigDecimal2==bigDecimal3);//true
        
        
    }
}

细节:
如果表示数字不大不超过double范围 用静态方法
如果较大 超范围 就用构造方法
如果我们传递是0到10之间整数 那么方法会返回已经创建好的对象 不会重新创建

BigDecima的使用

BigDecimal使用方法_第2张图片

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

public class BigDecimal1 {
    public static void main(String[] args) {


        //通过传递字符串表示的小数来创建对象
        BigDecimal bigDecimal=new BigDecimal("0.01");
        BigDecimal bigDecimal1=new BigDecimal("0.09");
        System.out.println(bigDecimal1);//0.01


        //通过静态方法来获取对象
        BigDecimal bigDecimal2=BigDecimal.valueOf(10);
        BigDecimal bigDecimal3=BigDecimal.valueOf(10);
        System.out.println(bigDecimal2==bigDecimal3);//true




        //加法
        BigDecimal bigDecimal4=BigDecimal.valueOf(10.0);
        BigDecimal bigDecimal5=BigDecimal.valueOf(2.0);
        BigDecimal add = bigDecimal4.add(bigDecimal5);
        System.out.println(add);//打印结果12



        //除法

        BigDecimal divide = bigDecimal4.divide(bigDecimal5);
        System.out.println(divide);//打印结果为5.0

        //除法2  除不尽的数用这个
        BigDecimal bigDecimal7=BigDecimal.valueOf(10.0);
        BigDecimal bigDecimal8=BigDecimal.valueOf(3.0);
        //下面第一个传入的表示除数  第二个是要保留小数点后几位  第三位是采用什么运输模式 我这边选择的是四舍五入
        BigDecimal divide1 = bigDecimal7.divide(bigDecimal8, 2, RoundingMode.HALF_UP);
        System.out.println(divide1);
        //3.33 打印结果


    }
}

舍入模式

up

BigDecimal使用方法_第3张图片
远离0的

down

BigDecimal使用方法_第4张图片
向0

CEILING

BigDecimal使用方法_第5张图片

向正无穷大

FLOOR

BigDecimal使用方法_第6张图片

向负无穷大

half_UP

BigDecimal使用方法_第7张图片

四舍五入,如果距离相等则向上舍入.如果被舍去部分=>0.5则舍入行为同UP 相反DOWN

half_UP

BigDecimal使用方法_第8张图片

BigDecimal存储原理

BigDecimal使用方法_第9张图片

BigDecimal在底层也是一个数组 他拿到一个小数他会把小数每一位分开存在一个数组内然后用ascii表对应数字表示

总结

BigDecimal使用方法_第10张图片

你可能感兴趣的:(java)