Java中的DecimalFormat用法解析
DecimalFormat用法
在項(xiàng)目中遇到需要維護(hù)層級(jí)關(guān)系的數(shù)據(jù),在parentid里遇到這樣一個(gè)需求,需要在一個(gè)數(shù)的前面加0,使這個(gè)字符串保持固定的長(zhǎng)度,這樣就遇到了這個(gè)類——DecimalFormat,繼承自NumberFormat。 在這里記錄一下它常用到的一些方法和使用方法:
double pi = 13.1415926; System.out.println(new DecimalFormat("整數(shù)部分是#").format(pi));//13 System.out.println(new DecimalFormat("0.0").format(pi));//13.1 System.out.println(new DecimalFormat("000.000").format(pi));//013.142 //以百分比方式計(jì)數(shù),并取兩位小數(shù) System.out.println(new DecimalFormat("#.##%").format(pi));//1314.16% System.out.println(DecimalFormat.getCurrencyInstance().format(pi));//¥13.14 long c=299792458;//光速 //每三位以逗號(hào)進(jìn)行分隔 System.out.println(new DecimalFormat(",###").format(c));//299,792,458
在使用的時(shí)候我還發(fā)現(xiàn)有#和0兩種占位符,于是我又查了一下它們的區(qū)別
System.out.println(new java.text.DecimalFormat("#.###").format(3.0)); //3 System.out.println(new java.text.DecimalFormat("0.000").format(3.0) ); //3..000 DecimalFormat df1,df2; System.out.println("整數(shù)部分0/#的區(qū)別"); df1 = new DecimalFormat("#.00"); df2 = new DecimalFormat("0.00"); System.out.println(df1.format(0.1)); // .10 System.out.println(df2.format(0.1)); // 0.10 System.out.println("小數(shù)部分0/#的區(qū)別"); df1 = new DecimalFormat("0.00"); df2 = new DecimalFormat("0.##"); System.out.println(df1.format(0.1)); // 0.10 System.out.println(df2.format(0.1)); // 0.1 System.out.println(df1.format(0.006)); // 0.01 System.out.println(df2.format(0.006)); // 0.01 System.out.println("3、整數(shù)部分有多位"); df1 = new DecimalFormat("0.00"); df2 = new DecimalFormat("#.00"); System.out.println(df1.format(2)); // 2.00 System.out.println(df2.format(2)); // 2.00 System.out.println(df1.format(20)); // 20.00 System.out.println(df2.format(20)); // 20.00 System.out.println(df1.format(200)); // 200.00 System.out.println(df2.format(200)); // 200.00
結(jié)論:
1、小數(shù)部分 #代表最多有幾位,0代表必須有且只能有幾位 .00 表示最終結(jié)果得有兩位小數(shù),沒有,我給你加上;多了,就四舍五入第三個(gè)小數(shù) .## 標(biāo)示最終結(jié)果最多有兩位小數(shù) 一位或者沒有都可以 多了同樣四舍五入第三位
2、整數(shù)部分 0 和 # 當(dāng)整數(shù)部分為0時(shí) 比如 0.1 # 此時(shí)認(rèn)為整數(shù)部分不存在,所以不寫 0 認(rèn)為沒有至少也得一位,寫上0 這跟上面第一部分的表現(xiàn)是一致的:# 有就寫,沒有就不寫 ;0 必須有 沒有補(bǔ)0
3、整數(shù)部分有多位時(shí): 2 20 200 由上面的結(jié)果可以看出 0和#對(duì)整數(shù)部分多位時(shí)的處理是一致的 就是有幾位寫多少位 這跟上面兩部分的表現(xiàn)是不一致的 在有多位時(shí),0和#都沒有匹配位數(shù),而是有多少寫多少
到此這篇關(guān)于Java中的DecimalFormat用法解析的文章就介紹到這了,更多相關(guān)DecimalFormat用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
通過Java實(shí)現(xiàn)對(duì)PDF頁面的詳細(xì)設(shè)置
這篇文章主要介紹了通過Java實(shí)現(xiàn)對(duì)PDF頁面的詳細(xì)設(shè)置,下面的示例將介紹通過Java編程來對(duì)PDF頁面進(jìn)行個(gè)性化設(shè)置的方法,包括設(shè)置頁面大小、頁邊距、紙張方向、頁面旋轉(zhuǎn)等,需要的朋友可以參考下2019-07-07Spring源碼之循環(huán)依賴之三級(jí)緩存詳解
這篇文章主要為大家詳細(xì)介紹了Spring源碼之循環(huán)依賴之三級(jí)緩存,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02SpringBoot + thymeleaf 實(shí)現(xiàn)讀取視頻列表并播放視頻功能
這篇文章主要介紹了SpringBoot + thymeleaf 實(shí)現(xiàn)讀取視頻列表并播放視頻功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04淺談@Aspect@Order各個(gè)通知的執(zhí)行順序
這篇文章主要介紹了@Aspect@Order各個(gè)通知的執(zhí)行順序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02Java集合基礎(chǔ)知識(shí) List/Set/Map詳解
這篇文章主要介紹了Java集合基礎(chǔ)知識(shí) List/Set/Map,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03Java String類簡(jiǎn)單用法實(shí)戰(zhàn)示例【字符串輸出、比較】
這篇文章主要介紹了Java String類簡(jiǎn)單用法,結(jié)合具體實(shí)例形式分析了Java使用String類實(shí)現(xiàn)字符串的輸出和比較功能相關(guān)操作技巧,需要的朋友可以參考下2019-07-07