我們要知道,程式有時候需要處理大整數,那我們該怎麼辦呢?我們可以使用java.math套件中的BigInteger類別提供任意精確度的整數運算,透過使用建構方法public BigInteger(String val)建構一個十進位的BigInteger物件。
這個建構方法可以發生NumberFormatException異常,也就是說,字串參數val中如果含有非數字字元就會發生NumberFormatException異常。
BigInteger類別的常用方法如下:
傳回目前大整數物件與參數指定的大整數物件的和。
傳回目前大整數物件與參數指定的大整數物件的差值。
傳回目前大整數物件與參數指定的大整數物件的積。
傳回目前大整數物件與參數指定的大整數物件的商。
傳回目前大整數物件與參數指定的大整數物件的餘數。
傳回目前大整數物件與參數指定的大整數的比較結果,傳回值是1、-1或0,分別表示目前大整數物件大於、小於或等於參數指定的大整數。
傳回目前大整數物件的絕對值。
傳回目前大整數物件的a次冪。
傳回目前大整數物件十進制的字串表示。
傳回目前大整數物件p進制的字串表示。
下面看一個運用大整數類別的使用方法,我們以大數加法這題為例,要求計算a+b的和,但這題目明確說明兩個數字a,b數字不超過1000位,可想而知,一般的整形一定放不下,1000位的數字加法是多少億..億了,而常規的做法就是以數組存儲數字,模擬加法進位等操作,操作起來比較麻煩。而如果運用java的大整數類,程式碼非常簡單,如下:
importjava.math.BigInteger;importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);BigIntegera=sc.nextBigInteger();BigIntegerb=sc.nextBigInteger(3); .println(a.add(b));}}
大家可以自行上機試驗並完成,
可以比較其他語言,如C、C++,解決問題的速度實在太快了