Java你不了解的大數(shù)型BigInteger與BigDecimal類
BigInteger類
在Java當(dāng)中,是有許多數(shù)字要進(jìn)行處理的類,比如Integer類,但是Integer類它也是有上限的。它的最大值就是到2^31-1.
如果我們此時(shí)想要表示更大的數(shù),那就用Integer是無(wú)法表示的了,所在在Java當(dāng)中提供了BigInteger類。
BigInteger類支持的數(shù)字可以說(shuō)是無(wú)限大的,且支持任意精度的整數(shù),也就是說(shuō)他可以準(zhǔn)確的表示任意數(shù)值而不會(huì)產(chǎn)生丟失的。
在這里也強(qiáng)調(diào)一下,因?yàn)閭魅氲臄?shù)型是字符型,所以在做運(yùn)算的時(shí)候,不能使用 + - * /
對(duì)應(yīng)的就是使用它們的方法:
add(),subtract(),multiply(),divide()
還有一些常用方法:
equals方法。進(jìn)行比較
代碼演示一下:
import java.math.BigInteger;
public class Demo01 {
public static void main(String[] args) {
BigInteger bigInteger1 = new BigInteger("2222222222222222222222222222222");
BigInteger bigInteger2 = new BigInteger("1111111111111111111111111111111");
System.out.println("bigInteger1大數(shù)為:" + bigInteger1);
System.out.println("bigInteger2大數(shù)為:" + bigInteger2);
System.out.println("兩個(gè)大數(shù)相加:" + bigInteger1.add(bigInteger2));//加
System.out.println("兩個(gè)大數(shù)相減:" + bigInteger1.subtract(bigInteger2));//減
System.out.println("兩個(gè)大數(shù)相乘:" + bigInteger1.multiply(bigInteger2));//乘
System.out.println("兩個(gè)大數(shù)相除:" + bigInteger1.divide(bigInteger2));//除
System.out.println("兩個(gè)大數(shù)相比:" + bigInteger1.equals(bigInteger2));//equals進(jìn)行比較
}
}

在做除法的時(shí)候,如果有小數(shù)位,是這接截取掉小數(shù)位。
當(dāng)然這方面不僅僅有有整型的,也有浮點(diǎn)型。
BigDecimal類
當(dāng)然浮點(diǎn)型的精度也是可以盡可能大的。
import java.math.BigDecimal;
public class Demo02 {
public static void main(String[] args) {
BigDecimal bigDecimal1 = new BigDecimal("12232423432432.53241234324");
BigDecimal bigDecimal2 = new BigDecimal("2.0");
System.out.println("bigDecimal1值: " + bigDecimal1);
System.out.println("bigDecimal2值: " + bigDecimal2);
System.out.println("加:" + bigDecimal1.add(bigDecimal2));
System.out.println("減:" + bigDecimal1.subtract(bigDecimal2));
System.out.println("乘:" + bigDecimal1.multiply(bigDecimal2));
System.out.println("除:" + bigDecimal1.divide(bigDecimal2));
}
}

在BigDecimal的方法里面,也更好的解決java語(yǔ)言里面的精度問(wèn)題(比如出現(xiàn)0.1x3 == 0.3的結(jié)果為false的問(wèn)題)

BigDecimal類當(dāng)中除法除不盡問(wèn)題
但是在使用BigDecimal的時(shí)候也有一個(gè)點(diǎn)需要注意一下(當(dāng)遇到不能除凈的話,它會(huì)選擇報(bào)錯(cuò)的。)

所以在做除法的時(shí)候,直接給它做一個(gè)截取位數(shù)就好。
先來(lái)看一個(gè)方法:
public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
divisor - 除數(shù)。
scale - 小數(shù)點(diǎn)后保留幾位
roundingMode - 選擇舍入模式
所以我們就可以將它寫成這樣:

舍入模式選擇:
| 模式 | 意思 |
|---|---|
| ROUND_CEILING | 向正無(wú)窮取數(shù) |
| ROUND_DOWN | 向0取數(shù) |
| ROUND_FLOOR | 向負(fù)無(wú)窮取數(shù) |
| ROUND_HALF_DOWN | 四舍五入遇到 .5向下取數(shù) |
| ROUND_HALF_UP | 四舍五入遇到 .5向上取數(shù) |
| ROUND_HALF_EVEN | 四舍五入遇到5看前面的數(shù),大于5向上,小于5向下,等于5再向前看。 |
到此這篇關(guān)于Java你不了解的大數(shù)型BigInteger與BigDecimal類的文章就介紹到這了,更多相關(guān)Java BigInteger類內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java BigInteger類,BigDecimal類,Date類,DateFormat類及Calendar類用法示例
- JAVA基本類型包裝類 BigDecimal BigInteger 的使用
- Java Big Number操作BigInteger及BigDecimal類詳解
- JAVA?biginteger類bigdecimal類的使用示例學(xué)習(xí)
- Java中BigInteger與BigDecimal類用法總結(jié)
- java數(shù)學(xué)類Math?BigInteger?BigDecimal使用介紹
- Java中的System類、BigInteger類和BigDecimal類詳解
- JavaAPI中BigInteger、BigDecimal的使用方法及應(yīng)用
相關(guān)文章
Springboot錯(cuò)誤處理機(jī)制實(shí)現(xiàn)原理解析
這篇文章主要介紹了springboot錯(cuò)誤處理機(jī)制實(shí)現(xiàn)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
Java調(diào)用SSE流式接口并流式返回給前端實(shí)現(xiàn)打字輸出效果
在Web開發(fā)中,有時(shí)我們需要將文件以流的形式返回給前端,下面這篇文章主要給大家介紹了關(guān)于Java調(diào)用SSE流式接口并流式返回給前端實(shí)現(xiàn)打字輸出效果的相關(guān)資料,需要的朋友可以參考下2024-08-08
Java判斷字符串是否是有效的括號(hào)(實(shí)例詳解)
給定一個(gè)只包括 '(',')','{','}','[',']' 的字符串 s ,判斷字符串是否有效,有效字符串需要滿足:左括號(hào)必須用相同類型的右括號(hào)閉合,這篇文章主要介紹了Java判斷字符串是否是有效的括號(hào),需要的朋友可以參考下2023-10-10
詳解Java無(wú)需解壓直接讀取Zip文件和文件內(nèi)容
本篇文章主要介紹了詳解Java無(wú)需解壓直接讀取Zip文件和文件內(nèi)容,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
Java多線程異步調(diào)用性能調(diào)優(yōu)方法詳解
這篇文章主要為大家詳細(xì)介紹了Java多線程異步調(diào)用性能調(diào)優(yōu),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03
基于Java實(shí)現(xiàn)XML文件的解析與更新
配置文件可以有很多種格式,包括?INI、JSON、YAML?和?XML。每一種編程語(yǔ)言解析這些格式的方式都不同。本文將通過(guò)Java語(yǔ)言實(shí)現(xiàn)XML文件的解析與更新,需要的可以參考一下2022-03-03

