• 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

  • 相关阅读:
    wsl手动启动特定的子系统
    winserver安装wsl
    wsl子系统下载地址-补充centos7地址
    wsl (1)-含wsl子系统各启动命令
    win10系统版本说明
    zenith 以及海康 rtsp流
    shinobi (4)
    ffmpeg
    CF993A Two Squares 几何 第二道 暴力或判断条件(*)
    CF994B Knights of a Polygonal Table 第一道 贪心 set/multiset的用法
  • 原文地址:https://www.cnblogs.com/sunzhiqiang/p/11730772.html
Copyright © 2020-2023  润新知