zoukankan      html  css  js  c++  java
  • BigDecimal 进行精确的数学运算 ,计算超大的数字(当long都不够用时)

     1 public class Demo01 {
     2 
     3     public static void main(String[] args) {
     4         
     5         BigDecimal bg1=new BigDecimal(1.23);
     6         //建议使用这种,因为参数为double类型时,本身就不能进行精确运算,转换后问题还在
     7         BigDecimal bg2=new BigDecimal("3.54");
     8         BigDecimal bg3=new BigDecimal("1.23");
     9         
    10         //加法
    11         System.out.println("不精确的---->"+bg2.add(bg1));
    12         System.out.println("精确的=====>"+bg2.add(bg3));
    13         //减法
    14         System.out.println(bg2.subtract(bg3));
    15         //乘法
    16         System.out.println(bg2.multiply(bg3));
    17         //除法,当不能整除时一定要有舍入模式  //第一个参数是操作数,第二个是舍入位数,第三个是舍入模式
    18         System.out.println(bg2.divide(bg3,4,BigDecimal.ROUND_HALF_UP));
    19         
    20         //超大数值运算
    21         BigInteger bg4=new BigInteger("8888888888888888888888888888888888");
    22         BigInteger bg5=new BigInteger("8888888888888888888888888888888888");
    23         System.out.println(bg4.add(bg5));
    24         System.out.println(bg4.multiply(bg5));
    25         
    26     }
    27 
    28 }

    控制台输出结果:

    不精确的---->4.769999999999999982236431605997495353221893310546875
    精确的=====>4.77
    2.31
    4.3542
    2.8780
    17777777777777777777777777777777776
    79012345679012345679012345679012329876543209876543209876543209876544

  • 相关阅读:
    PDF格式简单分析
    python 2.x 版本 pip 的使用
    网络读书笔记-运输层
    网络读书笔记-应用层
    线程池源码解析
    管道流创建订单
    @autowire、@resource原理
    Spring如何解决循环依赖
    结合Spring特性实现策略模式
    自定义注解+AOP实现redis分布式锁
  • 原文地址:https://www.cnblogs.com/sunzhiqiang/p/11730772.html
Copyright © 2011-2022 走看看