Java 中大数的处理方案BigInteger和BigDecimal类的使用

Posted 路宇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 中大数的处理方案BigInteger和BigDecimal类的使用相关的知识,希望对你有一定的参考价值。

博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,
👉点击跳转到网站

BigInteger和BigDecimal的介绍

应用场景:
1、BigInteger适合保存比较大的整型
2、BigDecimal适合保存精度更高的浮点型(小数)

一、BigInteger类的使用详解,代码如下

public class BigInteger_ 
    public static void main(String[] args) 
        //当我们编程中,需要处理很大的整数,long不够用
        //可以使用BigInteger的类来搞定
//        long l = 234459897895499999999999999999999l;
//        System.out.println("l=" + l);

        BigInteger bigInteger = new BigInteger("234459897895499999999999999999999");
        System.out.println(bigInteger);
        //1.在对BigInteger进行加减乘除的时候,需要使用对应的方法,不能直接进行 + - * /
        BigInteger bigInteger2 = new BigInteger("100");
        BigInteger add = bigInteger.add(bigInteger2);
        System.out.println(add);//+

        BigInteger subtract = bigInteger.subtract(bigInteger2);
        System.out.println(subtract); //减

        BigInteger divide = bigInteger.divide(bigInteger2);
        System.out.println(divide);//除

    

输出结果如下

234459897895499999999999999999999
234459897895500000000000000000099
234459897895499999999999999999899
2344598978954999999999999999999

二、BigDecimal类的使用详解,代码如下

public class BigDecimal_ 
    public static void main(String[] args) 
        //当我们需要保存一个精度很高的数时,double不够用
        //可以用BigDecimal
//        double d=19999.2323223423493423423432423;
//        System.out.println(d);

        BigDecimal bigDecimal = new BigDecimal("19999.2323223423493423423432423");
        BigDecimal bigDecimal2 = new BigDecimal("1.1");
        System.out.println(bigDecimal);

        //1.如果对BigDecimal进行运算,比如加减乘除,需要使用对应的方法
        //2.创建一个需要操作的BigDecimal然后调用相应的方法即可
        System.out.println(bigDecimal.add(bigDecimal2));//+
        System.out.println(bigDecimal.subtract(bigDecimal2));//-
        System.out.println(bigDecimal.multiply(bigDecimal2));//*
        //在调用divide 方法时,指定精度即可.BigDecimal.ROUND_CEILING
        //如果有无限循环小数,就会保留分子的精度 就是定义的bigDecimal 数对应的分子的精度,小数点后的位数
        //不指定精度,可能就会抛出异常
        System.out.println(bigDecimal.divide(bigDecimal2, BigDecimal.ROUND_CEILING));// /  可能抛出异常ArithmeticException
    

输出结果如下

19999.2323223423493423423432423
20000.3323223423493423423432423
19998.1323223423493423423432423
21999.15555457658427657657756653
18181.1202930384994021294029476

以上是关于Java 中大数的处理方案BigInteger和BigDecimal类的使用的主要内容,如果未能解决你的问题,请参考以下文章

Java中的大数处理类BigInteger和BigDecimar浅析

java大数--总结

大数处理

JAVA 大数阶乘,不用biginteger怎么做

JAVA大数类库初始化BigInteger问题

Java大数类介绍