這篇文章主要為大家展示了JDK12中怎么使用CompactNumberFormat,內(nèi)容簡(jiǎn)而易懂,希望大家可以學(xué)習(xí)一下,學(xué)習(xí)完之后肯定會(huì)有收獲的,下面讓小編帶大家一起來(lái)看看吧。
創(chuàng)新互聯(lián)是一家專業(yè)提供紅山企業(yè)網(wǎng)站建設(shè),專注與做網(wǎng)站、成都網(wǎng)站制作、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為紅山眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
簡(jiǎn)介
JDK12引入了新的格式化數(shù)字的類叫做CompactNumberFormat。主要方便我們對(duì)很長(zhǎng)的數(shù)字進(jìn)行簡(jiǎn)寫(xiě)。比如1000可以簡(jiǎn)寫(xiě)為1K或者1 thousand。
本文將會(huì)講解CompactNumberFormat的基本構(gòu)成和使用方法,最后在實(shí)際的例子中結(jié)束文章的講解。
更多內(nèi)容請(qǐng)?jiān)L問(wèn)www.flydean.com
CompactNumberFormat詳解
CompactNumberFormat做為格式化數(shù)字的一部分是NumberFormat的子類。作用就是將數(shù)字進(jìn)行格式化。要想構(gòu)建一個(gè)CompactNumberFormat,最簡(jiǎn)單的辦法就是使用NumberFormat.getCompactNumberInstance方法了。
下面是該方法的定義:
public static NumberFormat getCompactNumberInstance(Locale locale, NumberFormat.Style formatStyle)
方法需要傳入兩個(gè)參數(shù):Locale和Style。
Locale
Locale代表著本地語(yǔ)言特性,比如在US locale中,10000可以表示為“10K”,而在China locale中,10000中就變成了“1萬(wàn)”。
Style
Style有兩種類型,short和long。比如說(shuō)10000的short表示是“10K”,而它的long表示是“10 thousand”。
JDK已經(jīng)為我們自定義了很多種內(nèi)置的Compact實(shí)現(xiàn),我們可以直接使用:
@Test public void testCompactNumberFormat(){ NumberFormat fmtShort = NumberFormat.getCompactNumberInstance( Locale.US, NumberFormat.Style.SHORT); NumberFormat fmtLong = NumberFormat.getCompactNumberInstance( Locale.US, NumberFormat.Style.LONG); log.info(fmtShort.format(312)); log.info(fmtShort.format(3123)); log.info(fmtShort.format(31234)); log.info(fmtLong.format(312)); log.info(fmtLong.format(3123)); log.info(fmtLong.format(31234)); }
輸出結(jié)果:
312
3K
31K
312
3 thousand
31 thousand
自定義CompactNumberFormat
除了使用NumberFormat工具類之外,我們還可以自定義CompactNumberFormat。
先看下CompactNumberFormat的定義:
public CompactNumberFormat(String decimalPattern, DecimalFormatSymbols symbols, String[] compactPatterns) public CompactNumberFormat(String decimalPattern, DecimalFormatSymbols symbols, String[] compactPatterns, String pluralRules)
CompactNumberFormat可以接受3個(gè)或者4個(gè)參數(shù)的構(gòu)造函數(shù)。
其中decimalPattern和symbols是用來(lái)正常解析數(shù)字的,compactPatterns則是用來(lái)生成縮寫(xiě)。pluralRules表示的是復(fù)數(shù)規(guī)則。
@Test public void useCustom(){ String[] compactPatterns = {"", "", "", "0千", "0萬(wàn)", "00萬(wàn)", "0百萬(wàn)", "0千萬(wàn)", "0億", "00億", "0百億", "0千億", "0兆", "00兆", "000兆"}; DecimalFormat decimalFormat = (DecimalFormat) NumberFormat.getNumberInstance(Locale.CHINA); CompactNumberFormat format = new CompactNumberFormat( decimalFormat.toPattern(), decimalFormat.getDecimalFormatSymbols(), compactPatterns); log.info(format.format(312340000)); }
上面是一個(gè)我們自定義的縮寫(xiě)規(guī)則。
輸出結(jié)果:
3億
解析CompactNumber
能生成自然也能夠解析,我們看一個(gè)解析的例子:
@Test public void testParse() throws ParseException { NumberFormat fmtLong = NumberFormat.getCompactNumberInstance( Locale.US, NumberFormat.Style.LONG); log.info(String.valueOf(fmtLong.parse("3 thousand"))); }
輸出結(jié)果:
3000
以上就是關(guān)于JDK12中怎么使用CompactNumberFormat的內(nèi)容,如果你們有學(xué)習(xí)到知識(shí)或者技能,可以把它分享出去讓更多的人看到。
本文題目:JDK12中怎么使用CompactNumberFormat
本文鏈接:http://www.2m8n56k.cn/article36/pjedpg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、虛擬主機(jī)、網(wǎng)站設(shè)計(jì)公司、自適應(yīng)網(wǎng)站、定制網(wǎng)站、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)