Java Big Number操作BigInteger及BigDecimal類詳解
BigInteger類
java.math.BigInteger 類的使用場景是大整數(shù)操作。它提供類似所有Java的基本整數(shù)運算符和java.lang.Math中的所有相關(guān)的方法的操作,如+、-、*、/、%、&、|、mod、>>、<<,以及min()、max()等等。
只不過它操作的整數(shù)都是極其大的,為科學計算提供了很大的便利。比如下面的代碼就是計算20000000000000000000 * 30000000000000000000,利用BigInteger可以很容易的計算出來結(jié)果。
import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); String a = in.nextLine(); String b = in.nextLine(); BigInteger biga = new BigInteger(a); BigInteger bigb = new BigInteger(b); BigInteger result = biga.multiply(bigb); System.out.println(result); } } //輸入 30000000000000000000 20000000000000000000 //輸出 600000000000000000000000000000000000000
構(gòu)造函數(shù)
BigInteger提供了6個構(gòu)造函數(shù),方便取到一個大數(shù)。上方的代碼就是利用形參是String的構(gòu)造函數(shù)來將傳入的字符串轉(zhuǎn)換為BigInteger類型。常用的構(gòu)造方法如下:
- BigInteger(String val):將10進制字符串轉(zhuǎn)換為BigInteger
- BigInteger(byte[] val):將只含有0和1的bite[]數(shù)組轉(zhuǎn)換為2進制表示的BigInteger值
- BigInteger(int numBits, Random rnd):構(gòu)造一個隨機生成的BigInteger,均勻分布在范圍0到 (2^numBits - 1)
- BigInteger(String val, int radix):將字符串轉(zhuǎn)換為指定進制的BigInteger
類方法
BigInteger的類方法有40多個,覆蓋了簡單四則運算、位運算、科學計算、哈希運算、類型轉(zhuǎn)換等。下面是最最常用的方法:
- BigInteger abs() :求絕對值
- BigInteger add(BigInteger val):計算和
- BigInteger subtract(BigInteger val):計算差
- BigInteger multiply(BigInteger val):計算積
- BigInteger divide(BigInteger val):計算商
- BigInteger pow(int exponent) :計算冪
- BigInteger remainder(BigInteger val):計算余數(shù)
- BigInteger max(BigInteger val):返回較大值
- BigInteger min(BigInteger val):返回較小值
BigDecimal類
java.math.BigDecimal 類提供用于算術(shù),刻度操作,舍入,比較,哈希算法和格式轉(zhuǎn)換操作。該類的使用范圍是小數(shù)運算。我們都知道Java的float和double是浮點數(shù),直接進行比較操作、運算操作都會有誤差,BigDecimal就不會出現(xiàn)這種情況。
toString()方法提供BigDecimal的規(guī)范表示。它使用戶可以完全控制舍入行為。提供用于操作BigDecimal規(guī)模兩種類型的操作:
- 縮放/舍入操作
- 小數(shù)點移動操作。
日常Coding中我還沒用到過這個類,需要使用的時候再查看文檔吧。不過這個類的使用方法應該和BigInteger類類似,只不過支持小數(shù)操作,在方法頭中會多一些形參來控制精度或其他控制。
以上就是Java Big Number操作BigInteger及BigDecimal類詳解的詳細內(nèi)容,更多關(guān)于Java Big Number操作的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
SpringBoot整合RabbitMQ實現(xiàn)延遲隊列的示例詳解
這篇文章主要為大家詳細介紹了SpringBoot如何整合RabbitMQ實現(xiàn)延遲隊列,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的可以了解一下2023-04-04利用Java獲取文件名、類名、方法名和行號的方法小結(jié)
這篇文章運用實例代碼給大家介紹了利用Java怎樣獲取文件名、類名、方法名和行號,有需要的可以參考借鑒,下面一起來看看吧。2016-08-08SpringBoot-JWT生成Token和攔截器的使用(訪問受限資源)
本文主要介紹了SpringBoot-JWT生成Token和攔截器的使用(訪問受限資源),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-05-05Java?實戰(zhàn)項目之家政服務(wù)平臺系統(tǒng)的實現(xiàn)流程
讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實現(xiàn)家政服務(wù)平臺系統(tǒng),大家可以在過程中查缺補漏,提升水平2021-11-11Springboot通過lucene實現(xiàn)全文檢索詳解流程
Lucene是一個基于Java的全文信息檢索工具包,它不是一個完整的搜索應用程序,而是為你的應用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta 家族中的一個開源項目,也是目前最為流行的基于 Java 開源全文檢索工具包2022-06-06