iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java你不了解的大数型BigInteger与BigDecimal类
  • 536
分享到

Java你不了解的大数型BigInteger与BigDecimal类

2024-04-02 19:04:59 536人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

BigInteger类 在Java当中,是有许多数字要进行处理的类,比如Integer类,但是Integer类它也是有上限的。它的最大值就是到2^31-1. 如果我们此时想要表示更大

BigInteger类

在Java当中,是有许多数字要进行处理的类,比如Integer类,但是Integer类它也是有上限的。它的最大值就是到2^31-1.

如果我们此时想要表示更大的数,那就用Integer是无法表示的了,所在在Java当中提供了BigInteger类。

BigInteger类支持的数字可以说是无限大的,且支持任意精度的整数,也就是说他可以准确的表示任意数值而不会产生丢失的。

在这里也强调一下,因为传入的数型是字符型,所以在做运算的时候,不能使用 + - * /

对应的就是使用它们的方法:

add(),subtract(),multiply(),divide()

还有一些常用方法:

equals方法。进行比较

代码演示一下:

import java.math.BigInteger;
public class Demo01 {
    public static void main(String[] args) {
        BigInteger bigInteger1 = new BigInteger("2222222222222222222222222222222");
        BigInteger bigInteger2 = new BigInteger("1111111111111111111111111111111");
        System.out.println("bigInteger1大数为:" + bigInteger1);
        System.out.println("bigInteger2大数为:" + bigInteger2);
        System.out.println("两个大数相加:" + bigInteger1.add(bigInteger2));//加
        System.out.println("两个大数相减:" + bigInteger1.subtract(bigInteger2));//减
        System.out.println("两个大数相乘:" + bigInteger1.multiply(bigInteger2));//乘
        System.out.println("两个大数相除:" + bigInteger1.divide(bigInteger2));//除
        System.out.println("两个大数相比:" + bigInteger1.equals(bigInteger2));//equals进行比较
    }
}

在做除法的时候,如果有小数位,是这接截取掉小数位。

当然这方面不仅仅有有整型的,也有浮点型。

BigDecimal类

当然浮点型的精度也是可以尽可能大的。

import java.math.BigDecimal;
public class Demo02 {
    public static void main(String[] args) {
        BigDecimal bigDecimal1 = new BigDecimal("12232423432432.53241234324");
        BigDecimal bigDecimal2 = new BigDecimal("2.0");
        System.out.println("bigDecimal1值: " + bigDecimal1);
        System.out.println("bigDecimal2值: " + bigDecimal2);
        System.out.println("加:" + bigDecimal1.add(bigDecimal2));
        System.out.println("减:" + bigDecimal1.subtract(bigDecimal2));
        System.out.println("乘:" + bigDecimal1.multiply(bigDecimal2));
        System.out.println("除:" + bigDecimal1.divide(bigDecimal2));
    }
}

在BigDecimal的方法里面,也更好的解决java语言里面的精度问题(比如出现0.1x3 == 0.3的结果为false的问题)

BigDecimal类当中除法除不尽问题

但是在使用BigDecimal的时候也有一个点需要注意一下(当遇到不能除净的话,它会选择报错的。)

所以在做除法的时候,直接给它做一个截取位数就好。

先来看一个方法:

public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)

divisor - 除数。

scale - 小数点后保留几位

roundingMode - 选择舍入模式

所以我们就可以将它写成这样:

舍入模式选择:

模式意思
ROUND_CEILING向正无穷取数
ROUND_DOWN向0取数
ROUND_FLOOR向负无穷取数
ROUND_HALF_DOWN四舍五入遇到 .5向下取数
ROUND_HALF_UP四舍五入遇到 .5向上取数
ROUND_HALF_EVEN四舍五入遇到5看前面的数,大于5向上,小于5向下,等于5再向前看。

到此这篇关于Java你不了解的大数型BigInteger与BigDecimal类的文章就介绍到这了,更多相关Java BigInteger类内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java你不了解的大数型BigInteger与BigDecimal类

本文链接: https://www.lsjlt.com/news/148740.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作