JavaAPI中BigInteger、BigDecimal的使用方法及應(yīng)用
BigInteger
BigInteger 是 Java 中的一個(gè)類,用于表示任意大小的整數(shù)。與基本數(shù)據(jù)類型 int 或 long 不同,BigInteger 沒(méi)有固定的范圍,可以表示非常大的整數(shù)值。
BigInteger 類提供了許多方法來(lái)進(jìn)行整數(shù)的運(yùn)算,包括加法、減法、乘法、除法、取余等。它還支持比較、位操作、冪運(yùn)算等功能。
BigInteger 類的優(yōu)點(diǎn)是可以準(zhǔn)確地表示和計(jì)算任意大小的整數(shù),而不會(huì)出現(xiàn)溢出的情況。這對(duì)于處理大整數(shù)、加密算法、密碼學(xué)等領(lǐng)域非常有用。
但需要注意的是,由于 BigInteger 是一個(gè)對(duì)象,而不是基本數(shù)據(jù)類型,因此在使用時(shí)需要進(jìn)行對(duì)象的創(chuàng)建和方法調(diào)用,會(huì)導(dǎo)致一定的性能損失。在處理一般大小的整數(shù)時(shí),可以使用基本數(shù)據(jù)類型 int 或 long 來(lái)獲得更高的性能。
總之,BigInteger 是用于處理任意大小整數(shù)的類,適用于需要高精度計(jì)算或處理非常大整數(shù)值的場(chǎng)景。
獲取BigInteger對(duì)象
獲取一個(gè)隨機(jī)的大整數(shù)
Random random=new Random(); BigInteger bigInteger=new BigInteger(number,random);
表示返回0 ~ 2^number-1
之間的一個(gè)整數(shù)
獲取指定的大整數(shù)
BigInteger bigInteger=new BigInteger(number);
注意
只能是獲取整數(shù),不能獲取小數(shù)或者字母
獲取指定進(jìn)制的大整數(shù)
BigInteger bigInteger=new BigInteger(number,進(jìn)制);
注意
進(jìn)制與number一定要吻合
,比如設(shè)置為二進(jìn)制時(shí),number必須為0和1組成的數(shù)(例如100,123就不行)- 數(shù)字不能是小數(shù)
靜態(tài)方法獲取BigInteger的對(duì)象,內(nèi)部有優(yōu)化
注意
?????能表示的范圍比較小,在long的取值范圍之內(nèi),超出long的范圍就不行了long的最大值是9223372036854775807
但是如果換成了下面這一種方式,就不會(huì)報(bào)錯(cuò)
證明了靜態(tài)方法獲取BigInteger的對(duì)象的范圍比較小
?????在內(nèi)部,對(duì)數(shù)字-16~16
進(jìn)行了優(yōu)化
提前把-16~16先創(chuàng)建好BigInteger的對(duì)象,如果多次獲取,不會(huì)創(chuàng)建新的對(duì)象
?????對(duì)象一旦創(chuàng)建,內(nèi)部的數(shù)據(jù)就不能發(fā)生變化
只要計(jì)算,就會(huì)產(chǎn)生新的對(duì)象
BigInteger常見(jiàn)成員方法
加減乘
除
獲取商
BigInteger resault=bigInteger1.divide(bigInteger2);
獲取商和余數(shù)
BigInteger[] arr=bigInteger1.divideAndRemainder(bigInteger2);
比較是否相同
次冪
獲取較大值
變?yōu)閘ong類型的整數(shù)
總結(jié)
BigDecimal
在編程中,特別是在處理金融、貨幣、精確計(jì)算等領(lǐng)域,使用 BigDecimal 進(jìn)行運(yùn)算可以提供更準(zhǔn)確的結(jié)果
。這是因?yàn)?BigDecimal 類在內(nèi)部使用了任意精度的定點(diǎn)數(shù)表示法,可以表示和計(jì)算非常大或非常小的數(shù)值,同時(shí)保持高精度。
相比之下,其他數(shù)據(jù)類型(如 float 或 double)使用浮點(diǎn)數(shù)表示法,其在表示和計(jì)算過(guò)程中存在精度限制和舍入誤差。這是因?yàn)楦↑c(diǎn)數(shù)使用有限的二進(jìn)制位表示小數(shù),無(wú)法準(zhǔn)確表示某些十進(jìn)制數(shù)。這可能導(dǎo)致在進(jìn)行精確計(jì)算時(shí)出現(xiàn)舍入錯(cuò)誤或不精確的結(jié)果。
然而,需要注意的是,由于 BigDecimal 在內(nèi)存使用和計(jì)算速度方面較 float 或 double 更為消耗資源
,因此在處理大量數(shù)據(jù)或需要高性能的場(chǎng)景下,需要權(quán)衡精度和性能之間的取舍。
通過(guò)傳遞字符串表示的數(shù)字來(lái)創(chuàng)建對(duì)象
通過(guò)靜態(tài)方法獲取對(duì)象
注意
- 如果要表示的數(shù)字不大,沒(méi)有超出double的取值范圍,建議使用靜態(tài)方法
- 如果要表示的數(shù)字比較大,超出了double的取值范圍,建議使用構(gòu)造方法
- 如果我們傳遞的是0~10之間的整數(shù),包含0,包含10,那么方法會(huì)返回已經(jīng)創(chuàng)建好的對(duì)象,不會(huì)重新new
加減乘
除
精確模式
public BigDecimal divide(BigDecimal val,精確幾位,舍入模式);
ctrl+p
可以看有什么參數(shù)
總結(jié)
到此這篇關(guān)于JavaAPI中BigInteger、BigDecimal的使用方法及應(yīng)用的文章就介紹到這了,更多相關(guān)JavaAPI BigInteger、BigDecimal使用方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis in查詢條件過(guò)長(zhǎng)的解決方案
這篇文章主要介紹了mybatis in查詢條件過(guò)長(zhǎng)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10SpringBoot實(shí)現(xiàn)攔截器、過(guò)濾器、監(jiān)聽(tīng)器過(guò)程解析
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)攔截器、過(guò)濾器、監(jiān)聽(tīng)器過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12Windows下java、javaw、javaws以及jvm.dll等進(jìn)程的區(qū)別
這篇文章主要介紹了Windows下java、javaw、javaws以及jvm.dll等進(jìn)程的區(qū)別,本文分別講解了它們的作用并給出代碼實(shí)例,最后做出了區(qū)別總結(jié),需要的朋友可以參考下2015-03-03Java實(shí)現(xiàn)List集合手動(dòng)分頁(yè)的方法
在工作中難免會(huì)遇到,將組裝的集合數(shù)據(jù)進(jìn)行分頁(yè)處理,本文主要介紹了Java實(shí)現(xiàn)List集合手動(dòng)分頁(yè)的方法,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03Spring Boot 工程的創(chuàng)建和運(yùn)行(圖文)
這篇文章主要介紹了Spring Boot 工程的創(chuàng)建和運(yùn)行(圖文),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02Spring MVC創(chuàng)建項(xiàng)目踩過(guò)的bug
這篇文章主要介紹了Spring MVC創(chuàng)建項(xiàng)目踩過(guò)的bug,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11mybatis?xml文件熱加載實(shí)現(xiàn)示例詳解
這篇文章主要為大家介紹了mybatis?xml文件熱加載實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03Spring框架設(shè)值注入操作實(shí)戰(zhàn)案例分析
這篇文章主要介紹了Spring框架設(shè)值注入操作,結(jié)合具體實(shí)例形式分析了spring框架設(shè)值注入相關(guān)實(shí)現(xiàn)與使用方法,需要的朋友可以參考下2019-11-11