<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
以下兩個類可用於格式化和解析數位:
NumberFormat 類可以將一個數值格式化為符合某個國家地區習慣的數值字串,也可以將符合某個國家地區習慣的數值字串解析為對應的數值。
Java8API檔案 https://docs.oracle.com/javase/8/docs/api/java/text/NumberFormat.html
方法:
format 方法:將一個數值格式化為符合某個國家地區習慣的數值字串 parse 方法:將符合某個國家地區習慣的數值字串解析為對應的數值 範例化NumberFormat類(在範例化時,可以使用 Locale 物件作為引數,也可以不使用): getXXXInstance() 方法:返回NumberFormat範例物件 getInstance():以預設語言環境返回NumberFormat範例物件 getNumberInstance(Locale locale):以引數Locale 物件所標識的本地資訊來獲得具有多種用途的NumberFormat範例物件(沒什麼實際作用) getIntegerInstance(Locale locale):以引數locale物件所標識的本地資訊來獲得處理整數的NumberFormat範例物件(沒什麼實際作用) getCurrencyInstance(Locale locale):以引數locale物件所標識的本地資訊來獲得處理貨幣的NumberFormat範例物件 getPercentInstance(Locale locale):以引數locale物件所標識的本地資訊來獲得處理百分比數值的NumberFormat範例物件
NumberFormatDemo
public class NumberFormatDemo { public static void main(String[] args) throws ParseException { int price = 18; NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.CHINA); System.out.println(nf.format(price));//輸出:¥18.00 nf = NumberFormat.getCurrencyInstance(Locale.US); System.out.println(nf.format(price));//輸出:$18.00 nf = NumberFormat.getCurrencyInstance(Locale.GERMAN); System.out.println(nf.format(price));//輸出:¤ 18,00 String str = "¤ 18,00"; Number n = nf.parse(str); System.out.println(n.doubleValue());//輸出 18 double d = 0.5; nf = NumberFormat.getPercentInstance(Locale.CHINA); System.out.println(nf.format(d));//50% } }
測試結果:
1.Java使用 int 資料計算百分比
public class NumberFormatDemo { public static void main(String[] args) throws ParseException { int n1 = 0; int n2 = 0; //建立一個數值格式化物件 NumberFormat nf = NumberFormat.getInstance(); //設定精確到小數點後2位 nf.setMaximumFractionDigits(2); String res1; if(n2 == 0){ //除數不能為0 res1 = "0"; }else{ res1 = nf.format((float) n1 / (float) n2 * 100); } System.out.println("百分比為:" + res1 + "%"); } }
DecimalFormat 類是NumberFormat 十進位制數位格式的具體子類。旨在解析和格式化任何語言環境中的數位,包括支援西方、阿拉伯語和印度語數位。
支援不同型別的數位,包括整數(123)、定點數(123.4)、科學計數法(1.23E4),百分比(12%)和貨幣金額(123美元)。
對於數值的小數部分,預設顯示3位小數,在去掉超出小數點3位以後的部分時,會將數值四捨五入為最接近的數值格式化輸出。
特殊模式字元:
*符號* | *地點* | *在地化?* | *含義* |
---|---|---|---|
0 | 數 | 是 | 數位,被格式化數值不夠的位數補零,若夠則不變 |
# | 數 | 是 | 數位,被格式化數值不夠的位數忽略,若夠則不變 |
. | 數 | 是 | 小數分隔符或貨幣小數分隔符 |
- | 數 | 是 | 減號,預設負數字首 |
, | 數 | 是 | 分組分隔符 |
E | 數 | 是 | 用科學記數法分隔尾數和指數。 不需要在字首或字尾中參照。 |
; | 子模式邊界 | 是 | 將正面和負面的子圖案分開 |
% | 字首或字尾 | 是 | 乘以100並顯示為百分比 |
u2030 | 字首或字尾 | 是 | 乘以1000並顯示為千分數,顯示出來為‰ |
¤(u00A4) | 字首或字尾 | 沒有 | 貨幣符號,由貨幣符號取代。如果加倍,則用國際貨幣符號代替。如果存在於模式中,則使用貨幣小數分隔符而不是小數分隔符。 |
’ | 字首或字尾 | 沒有 | 用於參照字首或字尾中的特殊字元,例如,"’#’#“格式為123到 “#123”。要建立單引號本身,請連續使用兩個:”# o’'clock"。 |
構造方法:
DecimalFormat() 使用預設語言環境的預設模式和符號建立物件。其中隱含設定了三個數一組,若呼叫該方法如123456.789->123,456.789 DecimalFormat(String pattern) 使用給定模式和預設語言環境的符號建立物件。 DecimalFormat(String pattern, DecimalFormatSymbols symbols) 使用給定的模式和符號建立物件 //pattern - 非在地化的模式字串 //symbols - 要使用的符號集
注:第三個構造方法一般不怎麼用到,若需要可參考 DecimalFormatSymbols類
Java8API檔案 https://docs.oracle.com/javase/8/docs/api/java/text/DecimalFormatSymbols.html
方法:
format()和parse()的呼叫和DateFormat類的呼叫方法相同。
format(Number->String)parse(String->Number)
其中,常用的成員方法有:
(1)applyPattern()方法,將給定的模式應用於Format物件 (2)getPositivePrefix()方法,獲取正字首 getPositiveSuffix()方法,獲取正字尾 setPositivePrefix(String newValue)方法,設定正字首 setPositiveSuffix(String newValue)方法,設定正字尾 (3)getNegativePrefix()方法,獲取否字首 getNegativeSuffix()方法,獲取否字尾 setNegativePrefix(String newValue)方法,設定否字首 setNegativeSuffix(String newValue)方法,設定否字尾 (4)getCurrency()方法,獲取格式化貨幣值時此十進位制格式使用的貨幣。 (5)getGroupingSize()方法,返回分組大小。分組大小是數位的整數部分中分組分隔符之間的位數。例如,在數位「123,456.78」中,分組大小為3。
更多詳細方法參見:java8API檔案 https://docs.oracle.com/javase/8/docs/api/java/text/DecimalFormat.html
基本語法:
1、字首和字尾:數位前後的符號,除uFFFE、uFFFF和特殊字元以外的所有Unicode字元。
2、如果使用具有多個分組字元的模式,則最後一個分隔符和整數結尾之間的間隔才是使用的分組大小。如"#,##,###,####"的分組為4。
3、整數部分,#號放在0的左邊
4、小數部分,#號放在0的右邊
public class DecimalFormatDemo { public static void main(String[] args) throws ParseException { double d=156.22359646; System.out.println(new DecimalFormat("0").format(d));//被格式化的數值位數夠,則取所有整數 System.out.println(new DecimalFormat("#").format(d));//被格式化的數值位數夠,則取所有整數 System.out.println(new DecimalFormat("00000.###").format(d));//被格式化的數值位數不夠,則整數位不夠的補零 System.out.println(new DecimalFormat("#.######u2030").format(d));//以千分比方式計數並且保留6位小數 System.out.println(new DecimalFormat("#.##%").format(d));//以百分比方式計數並且保留2位小數 long c=4673568; System.out.println(new DecimalFormat("#.#####E00").format(c));//顯示為科學計演演算法,並保留5為小數且被格式化的數值位數不夠,不夠的補零 System.out.println(new DecimalFormat("00.####E0").format(c));//顯示為科學計數法,並保留2位整數,4位元小數 System.out.println(new DecimalFormat("####,###").format(c));//毎三位用逗號分隔 System.out.println(new DecimalFormat("資料分隔後為,##大小").format(c)); } }
測試結果:
到此這篇關於Java數位格式類(NumberFormat類和DecimalFormat類)用法的文章就介紹到這了,更多相關Java數位格式類用法內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45