我們要知道,程序有時候需要處理大整數(shù),那我們該怎么辦呢?我們可以使用java.math包中的BigInteger類提供任意精度的整數(shù)運算,通過使用構(gòu)造方法public BigInteger(String val)構(gòu)造一個十進(jìn)制的BigInteger對象。
該構(gòu)造方法可以發(fā)生NumberFormatException異常,也就是說,字符串參數(shù)val中如果含有非數(shù)字字符就會發(fā)生NumberFormatException異常。
BigInteger類的常用方法如下:
1)public BigInteger add(BigInteger val)
返回當(dāng)前大整數(shù)對象與參數(shù)指定的大整數(shù)對象的和。
2)public BigInteger subtract(BigInteger val)
返回當(dāng)前大整數(shù)對象與參數(shù)指定的大整數(shù)對象的差。
3)public BigInteger multiply(BigInteger val)
返回當(dāng)前大整數(shù)對象與參數(shù)指定的大整數(shù)對象的積。
4)public BigInteger divide(BigInteger val)
返回當(dāng)前大整數(shù)對象與參數(shù)指定的大整數(shù)對象的商。
5)public BigInteger remainder(BigInteger val)
返回當(dāng)前大整數(shù)對象與參數(shù)指定的大整數(shù)對象的余。
6)public int compareTo(BigInteger val)
返回當(dāng)前大整數(shù)對象與參數(shù)指定的大整數(shù)的比較結(jié)果,返回值是1、-1或0,分別表示當(dāng)前大整數(shù)對象大于、小于或等于參數(shù)指定的大整數(shù)。
7)public BigInteger abs()
返回當(dāng)前大整數(shù)對象的絕對值。
8)public BigInteger pow(int a)
返回當(dāng)前大整數(shù)對象的a次冪。
9)public String toString()
返回當(dāng)前大整數(shù)對象十進(jìn)制的字符串表示。
10)public String toString(int p)
返回當(dāng)前大整數(shù)對象p進(jìn)制的字符串表示。
下面看一個運用大整數(shù)類的使用方法,我們以大數(shù)加法這道題為例,要求計算a+b的和,但這道題目明確說明兩個數(shù)字a,b數(shù)字不超過1000位,可想而知,一般的整形一定放不下,1000位的數(shù)字加法是多少億..億了,而常規(guī)的做法就是以數(shù)組存儲數(shù)字,模擬加法進(jìn)位等操作,操作起來比較麻煩。而如果運用java的大整數(shù)類,代碼非常簡單,如下:
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)); } }
大家可以自行上機(jī)試驗并完成,
可以對比其他語言,如C、C++,解決問題的速度實在太快了
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點擊了解:
一點編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程