zoukankan      html  css  js  c++  java
  • Java基础004 --- BigInteger和BigDecimal

    不可变类

    8种基本类型的包装类型以及BigInteger、BigDecimal

    BigInteger

    Java中,CPU原生提供的最大整形范围是64位long,64位long能够直接通过CPU指令运行,计算速度快;但是数据范围超过64位long呢?

    针对这种情况,Java提供了一个类来模拟大整数 --- BigInteger,它能够表示任意大小的整数,缺点是计算速度慢;做运算时只能用该类提供的计算方法做运算;

    BigDecimal

    和BigInteger类似,BigDecimal用来表示任意大小的浮点数并且精度完全准确

    1、浮点数乘法

    BigDecimal bd = new BigDecimal("123.45670000");
    System.out.println(bd.multiply(bd));
    15241.5567748900000000

    2、获取有效值完全一致,但是去除末尾的0

    BigDecimal bd = new BigDecimal("123.45670000");
    System.out.println(bd.multiply(bd).stripTrailingZeros());
    15241.55677489

    3、获取小数位数

    BigDecimal bd = new BigDecimal("123.45670000");
    System.out.println(bd.multiply(bd).scale());
    16

    4、设置小数有效位数并设置取舍规则

    BigDecimal bd3 = new BigDecimal("123.456789");
    BigDecimal bd4 = bd3.setScale(4, RoundingMode.HALF_UP);
    System.out.println(bd4);
    BigDecimal bd5 = bd3.setScale(4, RoundingMode.DOWN);
    System.out.println(bd5);
    BigDecimal bd6 = bd3.setScale(4, RoundingMode.UP);
    System.out.println(bd6);
    BigDecimal bd8 = bd3.setScale(4, RoundingMode.CEILING);

       123.4568
       123.4567
       123.4568
       123.4568

    5、BigDecimal做加减乘时,精度不会丢失,但是除法时,存在除不尽的情况,可以使用如下方法计算商和余数,divideAndRemainder返回一个数组

    BigDecimal n = new BigDecimal("12.75");
    BigDecimal m = new BigDecimal("0.14");
    BigDecimal[] dr = n.divideAndRemainder(m);
    System.out.println(dr[0]);
    System.out.println(dr[1]);
    91
    0.01
  • 相关阅读:
    rabbitmq-高级(死信队列)
    rabbitmq-高级(TTL过期时间)
    springboot整合rabbitmq(topic主题模式)
    springboot整合rabbitmq(direct路由模式)
    glide图片加载库
    自己封装的OKhttp请求
    手机上搭建微型服务器
    listview实现点击条目上的箭头展开隐藏菜单。
    recycleview + checkbox 实现单选
    recycleview中使用checkbox导致的重复选中问题
  • 原文地址:https://www.cnblogs.com/sniffs/p/12745533.html
Copyright © 2011-2022 走看看