一、JavaAPI官方描述
1、NumberFormat
NumberFormat幫助您格式化和解析任何區(qū)域設(shè)置的數(shù)字。您的代碼可以完全獨立于小數(shù)點,千位分隔符的區(qū)域設(shè)置約定,甚至是使用的特定十進制數(shù)字,或者數(shù)字格式是否為十進制。
2、 DecimalFormat
DecimalFormat是NumberFormat十進制數(shù)字格式的具體子類 。它具有多種功能,旨在解析和格式化任何語言環(huán)境中的數(shù)字,包括支持西方,阿拉伯語和印度語數(shù)字。它還支持不同類型的數(shù)字,包括整數(shù)(123),定點數(shù)(123.4),科學記數(shù)法(1.23E4),百分比(12%)和貨幣金額(123美元)。所有這些都可以本地化。
二、NumberFormat詳解
1、獲取NumberFormat實例
//創(chuàng)建 一個整數(shù)格式 地區(qū)用系統(tǒng)默認的
NumberFormat integerNumber = NumberFormat.getIntegerInstance(Locale.getDefault());
- 使用getInstance或getNumberInstance獲取正常的數(shù)字格式。
- 使用getIntegerInstance得到的整數(shù)格式。
- 使用getCurrencyInstance來獲取貨幣數(shù)字格式。
- 使用getPercentInstance獲取顯示百分比的格式。
2、常用方法
3、NumberFormat類的使用
要使用NumberFormat類,首先需要使用NumberFormat類的靜態(tài)方法getNumberInstance()來獲取一個NumberFormat實例,然后可以使用實例的format()方法將數(shù)字轉(zhuǎn)換為字符串形式,也可以使用實例的parse()方法將字符串轉(zhuǎn)換為數(shù)字形式。
4.NumberFormat類使用示例
// 1.創(chuàng)建一個實例
NumberFormat numberFormat = NumberFormat.getNumberInstance();
// 2.設(shè)置小數(shù)點后的位數(shù)
numberFormat.setMaximumFractionDigits(2);
// 3.設(shè)置是否使用千分位分隔符
numberFormat.setGroupingUsed(false);
// 4.將數(shù)字123456.789格式化為字符串“123456.79”
String result1 = numberFormat.format(123456.789);
System.out.println(result1); //輸出結(jié)果:123456.79
三、DecimalFormat詳解
1、獲取NumberFormat實例
要獲取特定地區(qū)(包括默認地區(qū))的NumberFormat,請調(diào)用NumberFormat的工廠方法之一,例如getInstance()。通常,不要直接調(diào)用DecimalFormat構(gòu)造函數(shù),因為NumberFormat工廠方法可能返回DecimalFormat之外的子類。如果需要自定義format對象,可以這樣做:
try {
NumberFormat f = NumberFormat.getInstance(Locale.getDefault());
if (f instanceof DecimalFormat) {
((DecimalFormat) f).setDecimalSeparatorAlwaysShown(true);
//寫具體的代碼
}
} catch (Exception e) {
e.printStackTrace();
}
設(shè)置Pattern
DecimalFormat作為NumberFormat的具體實現(xiàn)子類,最大的特點就是 可以使用Pattern。來實現(xiàn)最大程度的對數(shù)據(jù)格式進行定制。
一個Pattern中的許多字符是按字面意思理解的;它們在解析期間匹配,在格式化期間輸出不變,就是字符在Pattern中 不影響最后的數(shù)字格式化另一方面,特殊字符代表其他字符、字符串或字符類。如果要以文字形式出現(xiàn)在前綴或后綴中,必須引用它們(除非另有說明)。
2、子類特有的方法
3、代碼示例
//創(chuàng)建一個默認的通用格式
NumberFormat numberFormat = NumberFormat.getInstance();
DecimalFormat numberDecimalFormat;
//捕捉異常,以防強制類型轉(zhuǎn)換出錯
try {
//強制轉(zhuǎn)換成DecimalFormat
numberDecimalFormat = (DecimalFormat) numberFormat;
//保留小數(shù)點后面三位,不足的補零,前面整數(shù)部分 每隔四位 ,用 “,” 符合隔開
numberDecimalFormat.applyPattern("#,####.000");
//設(shè)置舍入模式 為DOWN,否則默認的是HALF_EVEN
numberDecimalFormat.setRoundingMode(RoundingMode.DOWN);
//設(shè)置 要格式化的數(shù) 是正數(shù)的時候。前面加前綴
numberDecimalFormat.setPositivePrefix("Prefix ");
System.out.println("正數(shù)前綴 "+numberDecimalFormat.format(123456.7891));
//設(shè)置 要格式化的數(shù) 是正數(shù)的時候。后面加后綴
numberDecimalFormat.setPositiveSuffix(" Suffix");
System.out.println("正數(shù)后綴 "+numberDecimalFormat.format(123456.7891));
//設(shè)置整數(shù)部分的最大位數(shù)
numberDecimalFormat.setMaximumIntegerDigits(3);
System.out.println("整數(shù)最大位數(shù) "+numberDecimalFormat.format(123456.7891));
//設(shè)置整數(shù)部分最小位數(shù)
numberDecimalFormat.setMinimumIntegerDigits(10);
System.out.println("整數(shù)最小位數(shù) "+numberDecimalFormat.format(123456.7891));
//設(shè)置小數(shù)部分的最大位數(shù)
numberDecimalFormat.setMaximumFractionDigits(2);
System.out.println("小數(shù)部分最大位數(shù) "+numberDecimalFormat.format(123.4));
//設(shè)置小數(shù)部分的最小位數(shù)
numberDecimalFormat.setMinimumFractionDigits(6);
System.out.println("小數(shù)部分最小位數(shù) "+numberDecimalFormat.format(123.4));
}catch (Exception e){
e.printStackTrace();
}
四、DecimalFormat類符號含義
DecimalFormat 類主要靠 # 和 0 兩種占位符號來指定數(shù)字長度。0 表示如果位數(shù)不足則以 0 填充,# 表示只要有可能就把數(shù)字拉上這個位置。上面的例子包含了差不多所有的基本用法,如果你想了解更多,請參考 DecimalFormat 類的文檔。
符號含義:
0 一個數(shù)字
‘#’ 一個數(shù)字,不包括 0
. 小數(shù)的分隔符的占位符
, 分組分隔符的占位符
; 分隔格式。
- 缺省負數(shù)前綴。
% 乘以 100 和作為百分比顯示
? 乘以 1000 和作為千進制貨幣符顯示;用貨幣符號代替;如果雙寫,用 國際貨幣符號代替。如果出現(xiàn)在一個模式中,用貨幣十進制分隔符代 替十進制分隔符。文章來源:http://www.zghlxwxcb.cn/news/detail-780750.html
X 前綴或后綴中使用的任何其它字符,用來引用前綴或后綴中的特殊字符。文章來源地址http://www.zghlxwxcb.cn/news/detail-780750.html
DecimalFormat df1 = new DecimalFormat("0.0");
DecimalFormat df2 = new DecimalFormat("#.#");
DecimalFormat df3 = new DecimalFormat("000.000");
DecimalFormat df4 = new DecimalFormat("###.###");
System.out.println(df1.format(12.34)); //12.3
System.out.println(df2.format(12.34)); //12.3
System.out.println(df3.format(12.34)); //012.340
System.out.println(df4.format(12.34)); //12.34
import java.text.DecimalFormat;
public class Test{
public static void main(String[] args){
double pi=3.1415927;//圓周率
//取一位整數(shù)
System.out.println(new DecimalFormat("0").format(pi));//3
//取一位整數(shù)和兩位小數(shù)
System.out.println(new DecimalFormat("0.00").format(pi));//3.14
//取兩位整數(shù)和三位小數(shù),整數(shù)不足部分以0填補。
System.out.println(new DecimalFormat("00.000").format(pi));//03.142
//取所有整數(shù)部分
System.out.println(new DecimalFormat("#").format(pi));//3
//以百分比方式計數(shù),并取兩位小數(shù)
System.out.println(new DecimalFormat("#.##%").format(pi));//314.16%
long c=299792458;//光速
//顯示為科學計數(shù)法,并取五位小數(shù)
System.out.println(new DecimalFormat("#.#####E0").format(c));//2.99792E8
//顯示為兩位整數(shù)的科學計數(shù)法,并取四位小數(shù)
System.out.println(new DecimalFormat("00.####E0").format(c));//29.9792E7
//每三位以逗號進行分隔。
System.out.println(new DecimalFormat(",###").format(c));//299,792,458
//將格式嵌入文本
System.out.println(new DecimalFormat("光速大小為每秒,###米").format(c)); //光速大小為每秒299,792,458米
}
}
到了這里,關(guān)于java格式化數(shù)字 NumberFormat及DecimalFormat的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!