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

简介: 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


目录
相关文章
|
3月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
168 4
|
3月前
|
IDE JavaScript Java
在Java 11中,如何处理被弃用的类或接口?
在Java 11中,如何处理被弃用的类或接口?
248 5
|
3月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
243 1
|
3月前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
291 1
|
3月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
257 1
|
4月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
211 0
|
4月前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
386 16
|
5月前
|
缓存 并行计算 安全
关于Java多线程详解
本文深入讲解Java多线程编程,涵盖基础概念、线程创建与管理、同步机制、并发工具类、线程池、线程安全集合、实战案例及常见问题解决方案,助你掌握高性能并发编程技巧,应对多线程开发中的挑战。
|
5月前
|
数据采集 存储 前端开发
Java爬虫性能优化:多线程抓取JSP动态数据实践
Java爬虫性能优化:多线程抓取JSP动态数据实践

热门文章

最新文章