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