Dotcpp  >  编程教程  >  Java常用实用类  >  Java BigInteger类(大整数类)

Java BigInteger类(大整数类)

点击打开在线编译器,边学边练

我们要知道,程序有时候需要处理大整数,那我们该怎么办呢?我们可以使用java.math包中的BigInteger类提供任意精度的整数运算,通过使用构造方法public BigInteger(String val)构造一个十进制的BigInteger对象。


该构造方法可以发生NumberFormatException异常,也就是说,字符串参数val中如果含有非数字字符就会发生NumberFormatException异常。


BigInteger类的常用方法如下:

1)public BigInteger add(BigInteger val)

返回当前大整数对象与参数指定的大整数对象的和。

2)public BigInteger subtract(BigInteger val)

返回当前大整数对象与参数指定的大整数对象的差。

3)public BigInteger multiply(BigInteger val)

返回当前大整数对象与参数指定的大整数对象的积。

4)public BigInteger divide(BigInteger val)

返回当前大整数对象与参数指定的大整数对象的商。

5)public BigInteger remainder(BigInteger val)

返回当前大整数对象与参数指定的大整数对象的余。

6)public int compareTo(BigInteger val)

返回当前大整数对象与参数指定的大整数的比较结果,返回值是1、-1或0,分别表示当前大整数对象大于、小于或等于参数指定的大整数。

7)public BigInteger abs()

返回当前大整数对象的绝对值。

8)public BigInteger pow(int a)

返回当前大整数对象的a次幂。

9)public String toString()

返回当前大整数对象十进制的字符串表示。

10)public String toString(int p)

返回当前大整数对象p进制的字符串表示。


下面看一个运用大整数类的使用方法,我们以大数加法这道题为例,要求计算a+b的和,但这道题目明确说明两个数字a,b数字不超过1000位,可想而知,一般的整形一定放不下,1000位的数字加法是多少亿..亿了,而常规的做法就是以数组存储数字,模拟加法进位等操作,操作起来比较麻烦。而如果运用java的大整数类,代码非常简单,如下:

import java.math.BigInteger;
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        BigInteger a=sc.nextBigInteger();
        BigInteger b=sc.nextBigInteger();
        System.out.println(a.add(b));
    }
}

大家可以自行上机试验并完成,

可以对比其他语言,如C、C++,解决问题的速度实在太快了


本文固定URL:https://www.dotcpp.com/course/851

上一课:

Java Math类

下一课:

Java Random类

Java教程
第一章 Java入门
第二章 Java运算符和表达式
第三章 Java流程控制
第四章 Java类和对象
第五章 Java子类与继承
第六章 Java接口与实现
第七章 Java内部类与异常类
第八章 Java常用实用类
第九章 Java输入输出流
第十章 Java数组
Dotcpp在线编译      (登录可减少运行等待时间)