zoukankan      html  css  js  c++  java
  • BigDecimal相关整理

    1. bigdecimal类型四则运算:

      BigDecimal s = new Bigdecimal(5);

      BigDecimal x = new Bigdecimal(15);

    依次为最基础的加减乘除:

      s.add(x);

      s.substract(x);

      s.multiply(x);

      s.divide(x);

    1. Bigdecimal类型比较大小:

    s1.compareTo(s2);
    返回结果:整形,1是大于,0是等于,-1是小于

    2018-07-30补充

    1. 今天遇到的问题:BigDedcimal精度丢失
    public static void main(String [] args){
    
            BigDecimal s1 = new BigDecimal(0.12);
            BigDecimal s2 = new BigDecimal(0.24);
            BigDecimal s3 = new BigDecimal("0.12");
            BigDecimal s4 = new BigDecimal("0.24");
    
            System.out.println(s1.add(s2));
            System.out.println(s3.add(s4));
        }
    

    结果如下:

    0.35999999999999998667732370449812151491641998291015625
    0.36
    

    解决方法:
    1.new BigDecimal(0.12+"")
    2.new BigDecimal(BigDecimal.valueOf(0.12))
    3.new BigDecimal("0.12")
    三种方法本质相同,都是将其转换为String类型

    public static BigDecimal valueOf(double val) {
            return new BigDecimal(Double.toString(val));
        }
    
    

    原因:浮点数在系统中是以二进制表示的,在进行计算的时候会有误差的存在

    ···
    0.1不能用二进制表示导致数据精度丢失:

    0.1×2=0.2 .....................0

    0.2×2=0.4 ......................0

    0.4×2=0.8 .....................0

    0.8×2=1.6.......................1

    0.6×2=1.2.......................1

    0.2×2=0.4.......................0

    .....

    是无限循环的
    ···

  • 相关阅读:
    学习Java的第八天
    学习Java的第七天
    学习Java的第六天
    学习Java的第五天
    学习Java的第四天
    学习Java的第三天
    学习Java的第二天
    学习Java的第一天
    第九天
    第八次
  • 原文地址:https://www.cnblogs.com/gosun/p/9393492.html
Copyright © 2011-2022 走看看