目錄
- 一、BigInteger類簡單介紹
- 二、BigInteger構造方式
- (1)構造方式
- (2)輸入方式
- 三、BigInteger常見的成員方法
- (1)方法介紹
- (2)方法使用演示
- 1.加減乘除余
- 2.比較
- 3.絕對值和冪
- 4.轉換成對應進制字符串
- 四、BigInteger不常見的成員方法
一、BigInteger類簡單介紹
我們都知道Integer的存儲范圍是-2^31~2^31-1(-2147483648~2147483647),當我們要存儲比Integer更大的數字時,java中就為我們提供了一個BigInteger類,方便我們去處理更大的數。
BigInteger 類支持任意精度的整數,也就是說在運算中 BigInteger 類可以準確地表示任何大小的整數值。首先除了基本的操作加、減、乘、除,在該類中還封裝了其他很有用的操作,接下來將一一介紹。
二、BigInteger構造方式
(1)構造方式
很顯然,BigInteger是一個封裝類,就跟String類是一樣的。使用時需要導入import java.math.BigInteger;
使用 BigInteger 類,首先要創建一個 BigInteger 對象。BigInteger是一個有參構造,需要傳入一個參數,最常見的就是給定一個字符串,使用構造方法public BigInteger(String val)構造一個十進制的BigInteger對象。
小貼士:該構造方法可以發生NumberFormatException異常,當字符串參數val中如果含有非數字字符就會發生該異常。
import java.math.BigInteger; /* * BigInteger演示 */ public class Test { public static void main(String[] args) { BigInteger bigInteger=new BigInteger("1123"); } }
(2)輸入方式
普通輸入:
Scanner sc=new Scanner(System.in); BigInteger a=sc.BigIntegerNext();
循環輸入 :
while (sc.hasNextBigInteger()) { // 注意 while 處理多個 case }
除了定義實例,我們也可以像使用String類那樣使用BigInteger類,給大家一個題目感受一下,該題就是本文開頭所提及的三角形求解。
import java.math.BigInteger; import java.util.Arrays; import java.util.Scanner; /* * 三角形 */ public class Triangle { public static void main(String[] args) { Scanner sc=new Scanner(System.in); while (sc.hasNextBigInteger()) { // 注意 while 處理多個 case BigInteger []triangle=new BigInteger[3]; for(int i=0;i<3;i++) { triangle[i]=sc.nextBigInteger(); } Arrays.sort(triangle); if(triangle[0].add(triangle[1]).compareTo(triangle[2])>0) { System.out.println("Yes"); }else { System.out.println("No"); } } } }
三、BigInteger常見的成員方法
(1)方法介紹
方法名 | 含義 |
public BigInteger add(BigInteger val) | 返回當前大整數對象與參數指定的大整數對象的和。 |
public BigInteger subtract(BigInteger val) | 返回當前大整數對象與參數指定的大整數對象的差。 |
public BigInteger multiply(BigInteger val) | 返回當前大整數對象與參數指定的大整數對象的積。 |
public BigInteger divide(BigInteger val) | 返回當前大整數對象與參數指定的大整數對象的商。 |
public BigInteger remainder(BigInteger val) | 返回當前大整數對象與參數指定的大整數對象的余。 |
public int compareTo(BigInteger val) | 返回當前大整數對象與參數指定的大整數的比較結果, 返回值是1、-1或0,分別表示當前 大整數對象大于、小于或等于參數指定的大整數。 |
public BigInteger abs() | 返回當前大整數對象的絕對值。 |
public BigInteger pow(int a) | 返回當前大整數對象的a次冪。 |
public String toString() | 返回當前大整數對象十進制的字符串表示。 |
public String toString(int p) | 返回當前大數對象p進制的字符串表示。 |
(2)方法使用演示
1.加減乘除余
import java.math.BigInteger; import java.util.Scanner; /* * BigInteger演示 */ public class Test { 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));//加 System.out.println(a.subtract(b));//減 System.out.println(a.multiply(b));//乘 System.out.println(a.divide(b));//除 System.out.println(a.remainder(b));//余 } }
看結果對于超大數字,也是完美計算結果的。
a>b返回結果為1。