【java基础】大数处理 BigInteger、BigDecimal的使用

有时候,不是因为你没有能力,也不是因为你缺少勇气,只是因为你付出的努力还太少,所以,成功便不会走向你。而你所需要做的,就是坚定你的梦想,你的目标,你的未来,然后以不达目的誓不罢休的那股劲,去付出你的努力,成功就会慢慢向你靠近。

导读:本篇文章讲解 【java基础】大数处理 BigInteger、BigDecimal的使用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

前言

我们都知道,在java中整数最大的也就是long型,浮点数最大的也就是double。它们的精度都是有限的,如果遇到更大或者要求小数点后精确到1000位该怎么做呢?在java中有无限精度的数据类型吗?当然是有的,java提供了BigInteger和BigDecimal。这两个类可以处理包含任意长度数字序列的数值。

  • BigInteger类实现任意精度的整数运算
  • BigDecimal实现任意精度的浮点数运算

BigInteger

BigInteger类可以完成任意整数的运算,不会造成精度的丢失,BigIntege的创建有2种方式,分别是通过new和valueOf方法进行创建,使用如下

        // 初始化可以使用new,传入一个字符串即可
        BigInteger bigInteger  = new BigInteger("1");
        // 初始化也可以使用BigInteger.valueOf(),传入一个long型即可
        BigInteger bigInteger1 = BigInteger.valueOf(1);

对于BigInteger,因为这是一个类,肯定不能使用基本的运算符进行操作,所以我们要使用api完成各种运算操作,下面列出了常见的一些操作

        // BigInteger.ONE表示1,BigInteger还提供了另外其他几个常用的常数
        // 如BigInteger.TEN表示10,BigInteger.ZERO表示0
        // 加法
        BigInteger add = bigInteger.add(BigInteger.ONE);

        // 减法
        BigInteger subtract = bigInteger.subtract(BigInteger.ONE);

        // 乘法
        BigInteger multiply = bigInteger.multiply(BigInteger.ONE);

        // 除法
        BigInteger divide = bigInteger.divide(BigInteger.ONE);

        // 取余
        BigInteger mod = bigInteger.mod(BigInteger.ONE);

        // 平方根,要求jdk11+
        BigInteger sqrt = bigInteger.sqrt();

        // 幂运算
        BigInteger pow = bigInteger.pow(3);

        // 两个大数进行比较,小于返回-1,大于返回1,相等返回0
        int compareTo = bigInteger.compareTo(bigInteger1);

BigDecimal

BigDecimal可以完成任意精度的浮点数运算,用法和BigInteger Api基本相同.这里就不进行赘述了。下面位创建BigDecimal的2种方式

        BigDecimal bigDecimal1 = new BigDecimal("1.1");
        BigDecimal bigDecimal2 = BigDecimal.valueOf(1.2);

BigInteger和BigDecimal除法有一些区别,因为因为浮点数除法可能会产生循环。我们需要指定小数后面需要保留的位数

        // 所以我们在使用divide的时候可以指定舍入的方法(如四舍五入),以及保留的位数
        // divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
        // divisor除数,scale保留多少位小数,roundingMode舍入模式
        BigDecimal divide = bigDecimal1.divide(bigDecimal2, 17, RoundingMode.HALF_UP);

RoundingMode.HALF_UP这个就是表示使用四舍五入

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/146257.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!