最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中BigDecimal的介紹及使用教程BigDecimal格式化及BigDecimal常見(jiàn)問(wèn)題

 更新時(shí)間:2023年08月29日 15:34:38   作者:五月天的尾巴  
BigDecimal是Java在java.math包中提供的線程安全的API類,用來(lái)對(duì)超過(guò)16位有效位的數(shù)進(jìn)行精確的運(yùn)算,這篇文章主要介紹了java中BigDecimal的介紹及使用,BigDecimal格式化,BigDecimal常見(jiàn)問(wèn)題,需要的朋友可以參考下

一、BigDecimal概述

BigDecimal是Java在java.math包中提供的線程安全的API類,用來(lái)對(duì)超過(guò)16位有效位的數(shù)進(jìn)行精確的運(yùn)算。雙精度浮點(diǎn)型變量double可以處理16位有效數(shù),但在實(shí)際應(yīng)用中,可能需要對(duì)更大或者更小的數(shù)進(jìn)行運(yùn)算和處理。一般情況下,對(duì)于那些不需要準(zhǔn)確計(jì)算精度的數(shù)字,我們可以直接使用Float和Double處理,但是Double.valueOf(String) 和Float.valueOf(String)會(huì)丟失精度。所以開(kāi)發(fā)中,如果我們需要精確計(jì)算的結(jié)果,則必須使用BigDecimal類來(lái)操作。

? BigDecimal所創(chuàng)建的是對(duì)象,故我們不能使用傳統(tǒng)的+、-、*、/等算術(shù)運(yùn)算符直接對(duì)其對(duì)象進(jìn)行數(shù)學(xué)運(yùn)算,而必須調(diào)用其相對(duì)應(yīng)的方法。方法中的參數(shù)也必須是BigDecimal的對(duì)象。構(gòu)造器是類的特殊方法,專門用來(lái)創(chuàng)建對(duì)象,特別是帶有參數(shù)的對(duì)象。

二、BigDecimal常用構(gòu)造方法

方法含義
BigDecimal(int val)創(chuàng)建一個(gè)具有參數(shù)所指定整數(shù)值的對(duì)象。
BigDecimal(double val)創(chuàng)建一個(gè)具有參數(shù)所指定雙精度值的對(duì)象。 不推薦使用,因?yàn)榇嬖诰葋G失問(wèn)題
BigDecimal(long val)創(chuàng)建一個(gè)具有參數(shù)所指定長(zhǎng)整數(shù)值的對(duì)象。
BigDecimal(String val)創(chuàng)建一個(gè)具有參數(shù)所指定以字符串表示的數(shù)值的對(duì)象。 推薦使用

三、BigDecimal常用方法

注意:BigDecimal進(jìn)行運(yùn)算時(shí)必須要保證對(duì)象本身不能是null,否則就會(huì)拋空指針異常。

方法含義
add(BigDecimal)BigDecimal對(duì)象中的值相加,返回BigDecimal對(duì)象
subtract(BigDecimal)BigDecimal對(duì)象中的值相減,返回BigDecimal對(duì)象
multiply(BigDecimal)BigDecimal對(duì)象中的值相乘,返回BigDecimal對(duì)象
divide(BigDecimal)BigDecimal對(duì)象中的值相除,返回BigDecimal對(duì)象。 該方法可能會(huì)遇到無(wú)限精度問(wèn)題,會(huì)拋出異常,使用時(shí)需注意。詳細(xì)見(jiàn)下方的無(wú)限精度的坑
abs()將BigDecimal對(duì)象中的值轉(zhuǎn)換成絕對(duì)值
doubleValue()將BigDecimal對(duì)象中的值轉(zhuǎn)換成雙精度數(shù)
floatValue()將BigDecimal對(duì)象中的值轉(zhuǎn)換成單精度數(shù)
longValue()將BigDecimal對(duì)象中的值轉(zhuǎn)換成長(zhǎng)整數(shù)
intValue()將BigDecimal對(duì)象中的值轉(zhuǎn)換成整數(shù)
compareTo(BigDecimal val)比較大小,返回int類型。0(相等) 1(大于) -1(小于)
toString()有必要時(shí)使用科學(xué)計(jì)數(shù)法。
toPlainString()不使用任何指數(shù)。 推薦使用
toEngineeringString()有必要時(shí)使用工程計(jì)數(shù)法。 工程記數(shù)法是一種工程計(jì)算中經(jīng)常使用的記錄數(shù)字的方法,與科學(xué)技術(shù)法類似,但要求10的冪必須是3的倍數(shù)
max(BigDecimal val)兩值比較,返回最大值
negate()求相反數(shù),正變負(fù),負(fù)變正
pow(int n)求乘方,如BigDecimal.valueOf(2).pow(3)的值為8

代碼示例

import java.math.BigDecimal;
public class Test {
    public static void main(String[] args){
        BigDecimal b1 = new BigDecimal("1");
        BigDecimal b2 = new BigDecimal("2");
        BigDecimal b3 = new BigDecimal("4");
        System.out.println("相加:"+b1.add(b2));
        System.out.println("相減:"+b1.subtract(b2));
        System.out.println("相乘:"+b2.multiply(b3));
        System.out.println("相除:"+b2.divide(b3));
    }
}

四、BigDecimal進(jìn)階

BigDecimal的八種舍入模式

BigDecimal.setScale()方法用于格式化小數(shù)點(diǎn)
setScale(1)表示保留一位小數(shù),默認(rèn)用四舍五入方式
setScale(1,BigDecimal.ROUND_DOWN)直接刪除多余的小數(shù)位,如2.35會(huì)變成2.3
setScale(1,BigDecimal.ROUND_UP)進(jìn)位處理,2.35變成2.4
setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35變成2.4
setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入,2.35變成2.3,如果是5則向下舍
setScaler(1,BigDecimal.ROUND_CEILING)接近正無(wú)窮大的舍入
setScaler(1,BigDecimal.ROUND_FLOOR)接近負(fù)無(wú)窮大的舍入,數(shù)字>0和ROUND_UP作用一樣,數(shù)字<0和ROUND_DOWN作用一樣
setScaler(1,BigDecimal.ROUND_HALF_EVEN)向最接近的數(shù)字舍入,如果與兩個(gè)相鄰數(shù)字的距離相等,則向相鄰的偶數(shù)舍入。

1、ROUND_UP,向遠(yuǎn)離0的方向舍入,在丟棄非零部分之前始終增加數(shù)字(始終對(duì)非零舍棄部分前面的數(shù)字加1)。
注意,此舍入模式始終不會(huì)減少計(jì)算值的大小。
eg: 保留1位小數(shù) 1.60->1.6 1.61->1.7 1.66->1.7 , -1.62->-1.7

2、ROUND_DOWN,向接近0的方向舍入,在丟棄某部分之前,始終不增加數(shù)據(jù)(即,截?cái)啵?,該方式是只減不加。
eg: 保留1位小數(shù) 1.60->1.6 1.61->1.6 1.66->1.6 , -1.62->-1.6

3、ROUND_CEILING,向正無(wú)窮方向舍入,如果數(shù)值為正,舍入方式與ROUND_UP一致,如果為負(fù),舍入方式與ROUND_DOWN一致,該模式始終不會(huì)減少計(jì)算數(shù)值。
eg: 保留1位小數(shù) 1.60->1.6 1.61->1.7 1.66->1.7 , -1.62->-1.6

4、ROUND_FLOOR,向負(fù)無(wú)窮方向舍入,如果數(shù)值為正,舍入行為與 ROUND_DOWN 相同;如果為負(fù),則舍入行為與 ROUND_UP 相同。該模式始終不會(huì)增加計(jì)算數(shù)值。
eg: 保留1位小數(shù) 1.60->1.6 1.61->1.6 1.66->1.6 , -1.62->-1.7

5、ROUND_HALF_UP,向“最接近的”數(shù)字舍入,也就是四舍五入。
eg: 保留1位小數(shù) 1.61->1.6 1.65->1.7 1.66->1.7 , -1.62->-1.6

6、ROUND_HALF_DOWN,向“最接近的”數(shù)字舍入,如果與兩個(gè)相鄰數(shù)字的距離相等,則為上舍入的舍入模式,也就是五舍六入。
eg: 保留1位小數(shù) 1.61->1.6 1.65->1.6 1.66->1.7 , -1.62->-1.6

7、ROUND_HALF_EVEN,向“最接近的”數(shù)字舍入,如果與兩個(gè)相鄰數(shù)字的距離相等,則向相鄰的偶數(shù)舍入。如果舍棄部分左邊的數(shù)字為奇數(shù),則舍入行為與 ROUND_HALF_UP 相同;如果為偶數(shù),則舍入行為與 ROUND_HALF_DOWN 相同。
注意,在重復(fù)進(jìn)行一系列計(jì)算時(shí),此舍入模式可以將累加錯(cuò)誤減到最小。
此舍入模式也稱為“銀行家舍入法”,主要在美國(guó)使用。四舍六入,五分兩種情況。如果前一位為奇數(shù),則入位,否則舍去。以下例子為保留小數(shù)點(diǎn)1位,那么這種舍入方式下的結(jié)果。
eg. 1.15->1.2, 1.25->1.2

8、ROUND_UNNECESSARY,計(jì)算結(jié)果是精確的,不需要舍入模式。如果對(duì)獲得精確結(jié)果的操作指定此舍入模式,則拋出ArithmeticException。

代碼示例

BigDecimal b = new BigDecimal("1.6666");
System.out.println("result b:" + b.setScale(2, BigDecimal.ROUND_HALF_UP)); // 1.67
System.out.println("result b:" + b.setScale(2)); // 精度錯(cuò)誤

執(zhí)行結(jié)果:

result b:1.67
Exception in thread "main" java.lang.ArithmeticException: Rounding necessary

原因分析:

setScale方法默認(rèn)使用的roundingMode是ROUND_UNNECESSARY,不需要使用舍入模式,設(shè)置精度2位,但是小數(shù)點(diǎn)后有4位肯定會(huì)拋異常。

BigDecimal格式化、小數(shù)點(diǎn)轉(zhuǎn)換

BigDecimal可以與DecimalFormat結(jié)合使用,從而對(duì)金額格式化,如小數(shù)點(diǎn)后面統(tǒng)一保留兩位,不夠兩位的補(bǔ)零,多余兩位的舍入。

import java.math.BigDecimal;
import java.text.DecimalFormat;
public class Test {
    public static void main(String[] s){
        System.out.println(formatToNumber(new BigDecimal("12333.435")));
        System.out.println(formatToNumber(new BigDecimal(0)));
        System.out.println(formatToNumber(new BigDecimal("0.00")));
        System.out.println(formatToNumber(new BigDecimal("0.001")));
        System.out.println(formatToNumber(new BigDecimal("0.006")));
        System.out.println(formatToNumber(new BigDecimal("0.206")));
        System.out.println(formatToNumber(new BigDecimal("1.22")));
    }
    /**
     * @desc
     * @param obj 傳入的小數(shù)
     * @return
     */
    public static String formatToNumber(BigDecimal obj) {
        // DecimalFormat默認(rèn)使用的是進(jìn)位方式是RoundingMode.HALF_EVEN,此舍入模式也稱為“銀行家算法”,主要在美國(guó)使用。
        //銀行家算法:四舍六入五考慮,五后非零就進(jìn)一,五后為零看奇偶,五前為偶應(yīng)舍去,五前為奇要進(jìn)一
        DecimalFormat df = new DecimalFormat("###,##0.00"); 
        return df.format(obj);
    }
}

執(zhí)行結(jié)果:

12,333.44
0.00
0.00
0.00
0.01
0.21
1.22

需注意:

  • DecimalFormat的默認(rèn)進(jìn)位方式不是四舍五入,所以當(dāng)小數(shù)點(diǎn)后面需要舍去的時(shí)候,肯能跟預(yù)想的不一樣,具體可參考《關(guān)于DecimalFormat的取舍問(wèn)題,DecimalFormat四舍五入的坑
  • new DecimalFormat(“###,##0.00”)小數(shù)點(diǎn)前面需要有個(gè)0,這樣0-1之間的數(shù)字才會(huì)正常格式化;若##0.00的小數(shù)點(diǎn)前面沒(méi)有0,則0-1之間的數(shù)字會(huì)被丟失掉小數(shù)點(diǎn)前的0,代碼如下:
import java.math.BigDecimal;
import java.text.DecimalFormat;
public class Test {
    public static void main(String[] s){
        System.out.println(formatToNumber(new BigDecimal("12333.435")));
        System.out.println(formatToNumber(new BigDecimal(0)));
        System.out.println(formatToNumber(new BigDecimal("0.00")));
        System.out.println(formatToNumber(new BigDecimal("0.001")));
        System.out.println(formatToNumber(new BigDecimal("0.006")));
        System.out.println(formatToNumber(new BigDecimal("0.206")));
        System.out.println(formatToNumber(new BigDecimal("1.22")));
    }
    /**
     * @desc
     * @param obj 傳入的小數(shù)
     * @return
     */
    public static String formatToNumber(BigDecimal obj) {
        // DecimalFormat默認(rèn)使用的是進(jìn)位方式是RoundingMode.HALF_EVEN,此舍入模式也稱為“銀行家算法”,主要在美國(guó)使用。
        //銀行家算法:四舍六入五考慮,五后非零就進(jìn)一,五后為零看奇偶,五前為偶應(yīng)舍去,五前為奇要進(jìn)一
        DecimalFormat df = new DecimalFormat("###,##.00");
        return df.format(obj);
    }
}

執(zhí)行結(jié)果:

1,23,33.44
.00
.00
.00
.01
.21
1.22

貨幣格式化與百分比格式化

經(jīng)常能看到金額用¥120.00表示,利率用0.8%表示,這里擴(kuò)展一下BigDecimal的貨幣格式化與百分比格式化

NumberFormat類的format()方法可以使用BigDecimal對(duì)象作為其參數(shù),可以利用BigDecimal對(duì)超出16位有效數(shù)字的貨幣值,百分值,以及一般數(shù)值進(jìn)行格式化控制。

NumberFormat對(duì)象:
getCompactNumberInstance();返回FORMAT帶有"SHORT"格式樣式的默認(rèn)語(yǔ)言環(huán)境 的緊湊數(shù)字格式 。
getCurrencyInstance?(Locale inLocale);返回指定語(yǔ)言環(huán)境的貨幣格式。若是不指定參數(shù),則以默認(rèn)語(yǔ)言為參數(shù)。
getInstance?(Locale inLocale);返回指定語(yǔ)言環(huán)境的通用數(shù)字格式。若是不指定參數(shù),則以默認(rèn)語(yǔ)言為參數(shù)。
getPercentInstance?(Locale inLocale);返回指定語(yǔ)言環(huán)境的百分比格式。若是不指定參數(shù),則以默認(rèn)語(yǔ)言為參數(shù)。

代碼示例:

import java.math.BigDecimal;
import java.text.NumberFormat;
public class Test {
    public static void main(String[] args){
        NumberFormat currency = NumberFormat.getCurrencyInstance(); //建立貨幣格式化引用
        NumberFormat percent = NumberFormat.getPercentInstance();  //建立百分比格式化引用
        percent.setMinimumFractionDigits(2);//設(shè)置數(shù)的小數(shù)部分所允許的最小位數(shù)(如果不足后面補(bǔ)0)
        percent.setMaximumFractionDigits(3);//設(shè)置數(shù)的小數(shù)部分所允許的最大位數(shù)(如果超過(guò)會(huì)四舍五入)
        BigDecimal amount = new BigDecimal("250600.42"); //金額
        BigDecimal interestRate = new BigDecimal("0.0004"); //利率
        BigDecimal interest = amount .multiply(interestRate); //相乘
        System.out.println("金額: " + currency.format(loanAmount));
        System.out.println("利率: " + percent.format(interestRate));
        System.out.println("利息: " + currency.format(interest));
    }
}

執(zhí)行結(jié)果:

金額: ¥250,600.42
利率: 0.04%
利息: ¥100.24

NumberFormat提供了多種貨幣格式的引用,如¥(人民幣),$(美元、英元)等等,具體的后續(xù)將再寫一篇博文介紹。

五、BigDecimal常見(jiàn)問(wèn)題

踩坑一:創(chuàng)建 BigDecimal精度丟失的坑

在BigDecimal 中提供了多種創(chuàng)建方式,可以通過(guò)new 直接創(chuàng)建,也可以通過(guò) BigDecimal#valueOf 創(chuàng)建。這兩種方式使用不當(dāng),也會(huì)導(dǎo)致精度問(wèn)題。如下:

public static void main(String[] args) throws Exception {
   BigDecimal b1= new BigDecimal(0.1);
   System.out.println(b1);
   BigDecimal b2= BigDecimal.valueOf(0.1);
   System.out.println(b2);
   BigDecimal b3= BigDecimal.valueOf(0.111111111111111111111111111234);
   System.out.println(b3);
}

執(zhí)行結(jié)果:

0.1000000000000000055511151231257827021181583404541015625
0.1
0.1111111111111111

上面示例中兩個(gè)方法都傳入了double類型的參數(shù)0.1但是 b1 還是出現(xiàn)了精度的問(wèn)題。造成這種問(wèn)題的原因是 0.1 這個(gè)數(shù)字計(jì)算機(jī)是無(wú)法精確表示的,送給 BigDecimal 的時(shí)候就已經(jīng)丟精度了,而 BigDecimal#valueOf 的實(shí)現(xiàn)卻完全不同。如下源碼所示,BigDecimal#valueOf 中是把浮點(diǎn)數(shù)轉(zhuǎn)換成了字符串來(lái)構(gòu)造的BigDecimal,因此避免了問(wèn)題。

public static BigDecimal valueOf(double val) {
   return new BigDecimal(Double.toString(val));
}

結(jié)論:

  • 第一,在使用BigDecimal構(gòu)造函數(shù)時(shí),盡量傳遞字符串而非浮點(diǎn)類型;
  • 第二,如果無(wú)法滿足第一條,則可采用BigDecimal#valueOf方法來(lái)構(gòu)造初始化值。但是valueOf受double類型精度影響,當(dāng)傳入?yún)?shù)小數(shù)點(diǎn)后的位數(shù)超過(guò)double允許的16位精度還是可能會(huì)出現(xiàn)問(wèn)題的

踩坑二:等值比較的坑

一般在比較兩個(gè)值是否相等時(shí),都是用equals 方法,但是,在BigDecimal 中使用equals可能會(huì)導(dǎo)致結(jié)果錯(cuò)誤,BigDecimal 中提供了 compareTo 方法,在很多時(shí)候需要使用compareTo 比較兩個(gè)值。如下所示:

public static void main(String[] args){
    BigDecimal b1 = new BigDecimal("1.0");
    BigDecimal b2 = new BigDecimal("1.00");
    System.out.println(b1.equals(b2));
    System.out.println(b1.compareTo(b2));
}

執(zhí)行結(jié)果:

false
0

出現(xiàn)此種結(jié)果的原因是,equals不僅比較了值是否相等,還比較了精度是否相同。示例中,由于兩個(gè)值的精度不同,所有結(jié)果也就不相同。而 compareTo 是只比較值的大小。返回的值為-1(小于),0(等于),1(大于)。

結(jié)論

  • 如果比較兩個(gè)BigDecimal值的大小,采用其實(shí)現(xiàn)的compareTo方法;
  • 如果嚴(yán)格限制精度的比較,那么則可考慮使用equals方法。

踩坑三:無(wú)限精度的坑

BigDecimal 并不代表無(wú)限精度,當(dāng)在兩個(gè)數(shù)除不盡的時(shí)候,就會(huì)出現(xiàn)無(wú)限精度的坑,如下所示:

 public static void main(String[] args){
   BigDecimal b1 = new BigDecimal("1.0");
    BigDecimal b2 = new BigDecimal("3.0");
    b1.divide(b2);
}

執(zhí)行結(jié)果:

Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
    at java.math.BigDecimal.divide(BigDecimal.java:1693)
    at com.demo.controller.Test.main(Test.java:29)

在官方文檔中對(duì)該異常有如下說(shuō)明:

If the quotient has a nonterminating decimal expansion and the operation is specified to return an exact result, an ArithmeticException is thrown. Otherwise, the exact result of the division is returned, as done for other operations.

大致意思就是,如果在除法(divide)運(yùn)算過(guò)程中,如果商是一個(gè)無(wú)限小數(shù)(如 0.333…),而操作的結(jié)果預(yù)期是一個(gè)精確的數(shù)字,那么將會(huì)拋出ArithmeticException異常。

此種情況,只需要在使用 divide方法時(shí)指定結(jié)果的精度即可:

public static void main(String[] args){
   BigDecimal b1 = new BigDecimal("1.0");
   BigDecimal b2 = new BigDecimal("3.0");
   System.out.println(b1.divide(b2,2, RoundingMode.HALF_UP));//0.33
}

結(jié)論:

  • 在使用BigDecimal進(jìn)行(所有)運(yùn)算時(shí),盡量指定精度和舍入模式。

踩坑四:BigDecimal三種字符串輸出的坑

在BigDecimal 轉(zhuǎn)換成字符串時(shí),有可能輸出非你預(yù)期的結(jié)果。如下所示:

public static void main(String[] args){
   BigDecimal bg = new BigDecimal("1E11");
    System.out.println(bg.toString()); // 1E+11
    System.out.println(bg.toPlainString()); // 100000000000
    System.out.println(bg.toEngineeringString()); // 100E+9
}

執(zhí)行結(jié)果:

1E+11
100000000000
100E+9

可以看到三種方式輸出的結(jié)果可能都不相同,可能這個(gè)并不是預(yù)期的結(jié)果 ,BigDecimal 有三個(gè)方法可以轉(zhuǎn)為相應(yīng)的字符串類型,切記不要用錯(cuò):

以下內(nèi)容介紹java.math.BigDecimal下的三個(gè)toString方法的區(qū)別及用法

toPlainString() : 不使用任何指數(shù)。
toString() :有必要時(shí)使用科學(xué)計(jì)數(shù)法。
toEngineeringString():有必要時(shí)使用工程計(jì)數(shù)法。 工程記數(shù)法是一種工程計(jì)算中經(jīng)常使用的記錄數(shù)字的方法,與科學(xué)技術(shù)法類似,但要求10的冪必須是3的倍數(shù)

具體三種方法的區(qū)別可參見(jiàn)另一篇博文《BigDecimal的toString()、toPlainString()和toEngineeringString()區(qū)別及用法

踩坑五:使用BigDecimal進(jìn)行計(jì)算時(shí)參數(shù)不能為NULL

在使用BigDecimal類型進(jìn)行計(jì)算時(shí),進(jìn)行加、減、乘、除、比較大小時(shí),一定要保證參與計(jì)算的兩個(gè)值不能為空,否則會(huì)拋出java.lang.NullPointerException異常。

代碼示例:

BigDecimal b1 = new BigDecimal("1");
BigDecimal b2 = null;
System.out.println("相加:"+b2.add(b1));

結(jié)果:

Exception in thread "main" java.lang.NullPointerException
    at com.demo.controller.Test.main(Test.java:14)

踩坑六:使用BigDecimal進(jìn)行除法計(jì)算時(shí)被除數(shù)不能為0

代碼示例:

BigDecimal b1 = new BigDecimal("1");
BigDecimal b2 = new BigDecimal("0");
System.out.println(b1.divide(b2));

執(zhí)行結(jié)果:

Exception in thread "main" java.lang.ArithmeticException: Division by zero

踩坑七:執(zhí)行順序不能調(diào)換(乘法交換律失效)

乘法滿足交換律是一個(gè)常識(shí),但是在計(jì)算機(jī)的世界里,會(huì)出現(xiàn)不滿足乘法交換律的情況;

代碼示例:

BigDecimal b1 = BigDecimal.valueOf(1.0);
BigDecimal b2 = BigDecimal.valueOf(3.0);
BigDecimal b3 = BigDecimal.valueOf(3.0);
System.out.println(b1.divide(b2, 2, RoundingMode.HALF_UP).multiply(b3)); // 0.990
System.out.println(b1.multiply(b3).divide(b2, 2, RoundingMode.HALF_UP)); // 1.00

執(zhí)行結(jié)果:

0.990
1.00

執(zhí)行順序交換后,產(chǎn)生的結(jié)果可能不同,會(huì)導(dǎo)致一定的問(wèn)題,使用順序建議先乘后除。

到此這篇關(guān)于java中BigDecimal的介紹及使用,BigDecimal格式化,BigDecimal常見(jiàn)問(wèn)題的文章就介紹到這了,更多相關(guān)java BigDecimal格式化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java干貨知識(shí)深入理解內(nèi)部類

    Java干貨知識(shí)深入理解內(nèi)部類

    這篇文章主要介紹了Java干貨知識(shí)深入理解內(nèi)部類,定義在另一個(gè)類或方法中的類就叫做內(nèi)部類,需要的朋友可以參考下
    2019-06-06
  • java.util.Random和concurrent.ThreadLocalRandom使用對(duì)比

    java.util.Random和concurrent.ThreadLocalRandom使用對(duì)比

    這篇文章主要介紹了java.util.Random和concurrent.ThreadLocalRandom使用對(duì)比,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Spring注入bean的四種方式總結(jié)

    Spring注入bean的四種方式總結(jié)

    我們談到Spring的時(shí)候一定會(huì)提到IOC容器、DI依賴注入,Spring通過(guò)將一個(gè)個(gè)類標(biāo)注為Bean的方法注入到IOC容器中,達(dá)到了控制反轉(zhuǎn)的效果,Spring幫我們實(shí)現(xiàn)了一種通過(guò)注解來(lái)實(shí)現(xiàn)注入的方法,所以本文為大家介紹了Spring注入bean的四種方式,需要的朋友可以參考下
    2025-11-11
  • Java旋轉(zhuǎn)數(shù)組中最小數(shù)字具體實(shí)現(xiàn)(圖文詳解版)

    Java旋轉(zhuǎn)數(shù)組中最小數(shù)字具體實(shí)現(xiàn)(圖文詳解版)

    這篇文章主要給大家介紹了關(guān)于Java旋轉(zhuǎn)數(shù)組中最小數(shù)字具體實(shí)現(xiàn)的相關(guān)資料,旋轉(zhuǎn)數(shù)組,說(shuō)明數(shù)據(jù)不變,只是改變位置,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • spring security與corsFilter沖突的解決方案

    spring security與corsFilter沖突的解決方案

    這篇文章主要介紹了spring security與corsFilter沖突的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java中對(duì)象轉(zhuǎn)json字符串的三種常用方式

    java中對(duì)象轉(zhuǎn)json字符串的三種常用方式

    本文主要介紹了java中對(duì)象轉(zhuǎn)json字符串的三種常用方式,包含Jackson庫(kù),Gson庫(kù)和Hutool工具類這三種,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • Java Map集合使用方法全面梳理

    Java Map集合使用方法全面梳理

    Map是一種依照鍵(key)存儲(chǔ)元素的容器,鍵(key)很像下標(biāo),在List中下標(biāo)是整數(shù)。在Map中鍵(key)可以使任意類型的對(duì)象。Map中不能有重復(fù)的鍵(Key),每個(gè)鍵(key)都有一個(gè)對(duì)應(yīng)的值(value)。一個(gè)鍵(key)和它對(duì)應(yīng)的值構(gòu)成map集合中的一個(gè)元素
    2022-04-04
  • java文件上傳至ftp服務(wù)器的方法

    java文件上傳至ftp服務(wù)器的方法

    這篇文章主要為大家詳細(xì)介紹了java文件上傳至ftp服務(wù)器的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • SpringBoot中使用MQTT實(shí)現(xiàn)消息的訂閱和發(fā)布(示例代碼)

    SpringBoot中使用MQTT實(shí)現(xiàn)消息的訂閱和發(fā)布(示例代碼)

    這篇文章主要介紹了SpringBoot中使用MQTT實(shí)現(xiàn)消息的訂閱和發(fā)布的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • IDEA遠(yuǎn)程管理docker鏡像及容器服務(wù)的實(shí)現(xiàn)

    IDEA遠(yuǎn)程管理docker鏡像及容器服務(wù)的實(shí)現(xiàn)

    本文主要介紹了IDEA遠(yuǎn)程管理docker鏡像及容器服務(wù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04

最新評(píng)論

彩票| 普宁市| 梁河县| 武陟县| 天等县| 贵南县| 昌平区| 浪卡子县| 永寿县| 南岸区| 永安市| 上思县| 堆龙德庆县| 台东市| 东乡县| 乐业县| 盐源县| 大理市| 宁都县| 景东| 呼伦贝尔市| 隆林| 乳山市| 彩票| 微山县| 新闻| 当雄县| 宝兴县| 黑河市| 合江县| 镶黄旗| 佛冈县| 东丽区| 乌海市| 和政县| 新安县| 高淳县| 柘荣县| 永昌县| 达孜县| 西平县|