Java在java.text包中提供了API类NumberFormat,用于货币格式化,百分比格式化和数值格式化。java
注:currency ,货币,流通;Instance:例子,状况。git
一、getCurrencyInstance()。静态方法,创建一个NumberFormat类的对象并返回引用,该引用指订货币格式为系统预设的货币格式。spa
public static void main(String[] args){ NumberFormat nf=NumberFormat.getCurrencyInstance(); System.out.println(nf.format(123.658)); }
运行结果:code
¥123.56
二、getCurrencyInstance(Locale) 。静态方法,创建一个NumberFormat类的对象,并返回引用,该引用的货币格式由Locale指定。orm
public static void main(String[] args){ //Locale locale=Locale.US; NumberFormat nf=NumberFormat.getCurrencyInstance(Locale.US); System.out.println(nf.format(1236.258)); }
运行结果:xml
$1,236.26
三、format(anyNumberType)。返回由NumberFormat的静态方法所指定的输出格式,这个格式由字符串来表达。参数能够是数值类或者BigDecimal对象。对象
一、getPercentInstance()。静态方法,建立一个NumberFormat类的对象并返回其引用。该对象指定百分比格式为系统预设格式。ci
二、getPercentInstance(Locale)。静态方法,建立一个NumberFormat类的对象并返回引用。该对象的百分比格式由Locale来指定。字符串
三、format(anyNumberType)。返回由NumberFormat的静态方法所指定的输出格式,这个格式由字符串来表达。参数能够是数值类型或者BigDecimal对象。get
public static void main(String[] args){ double d=123.6958; NumberFormat nf=NumberFormat.getPercentInstance(); System.out.println(nf.format(d)); NumberFormat nf1=NumberFormat.getPercentInstance(Locale.CANADA); System.out.println(nf1.format(d)); }
运行结果:
12,370% 12,370%
四、setMinimumFractionDigits(int)。设置最少小数点位数。
五、setMaximumFractionDigits(int)。设置最多小数位数。
public static void main(String[] args){ double d=123.6958; NumberFormat nf=NumberFormat.getPercentInstance(); nf.setMinimumFractionDigits(4);//不足4位小数,则以0补位。 System.out.println(nf.format(d)); nf.setMaximumFractionDigits(1);//最多保留1位小数。 System.out.println(nf.format(d)); NumberFormat nf1=NumberFormat.getPercentInstance(Locale.CANADA); System.out.println(nf1.format(d)); nf1.setMaximumFractionDigits(1);//最多保留1位小数,如无小数不补0。 System.out.println(nf1.format(d)); }
运行结果:
12,369.5800% 12,369.6% 12,370% 12,369.6%
1.getNumberInstance(); 静态方法,建立一个NumberFormat类的对象并返回其引用。该对象指定数值格式为系统预设格式。
2.getNumberInstance(Locale); 静态方法,建立一个NumberFormat类的对象并返回引用。该对象的数值格式由Locale来指定。
3.format(anyNumberType);返回由NumberFormat的静态方法所指定的输出格式,这个格式由字符串来表达。参数能够是数值类型或者BigDecimal对象。
4.setMinimumFractionDigits(int)
5.setMaximumFractionDigits(int)
public static void main(String[] args){ double d=123456.3698; NumberFormat nf=NumberFormat.getNumberInstance(); System.out.println(nf.format(d)); nf.setMinimumFractionDigits(4); System.out.println(nf.format(d)); NumberFormat nf01=NumberFormat.getNumberInstance(Locale.US); System.out.println(nf01.format(d)); nf01.setMaximumFractionDigits(1); System.out.println(nf01.format(d)); }
运行结果:
123,456.3698 123,456.37 123,456.4
DecimalFormat提供了许多用来规定数字格式的模式字符串,进行对数字的格式化处理。本文只讨论经常使用的几种:
一、“0”——表示一位数值;如没有,显示0。如“0000.0000”,整数位>4,按实际输出,<4前面补0,凑足4位。
二、“#”——表示任何位数的整数。如没有,则不显示。在小数点模式后使用,只表示一位小数,四舍五入。例如:
# 无小数,小数部分四舍五入
.# 整数部分不变,一位小数,四舍五入
.## 整数部分不变,二位小数,四舍五入
三、“.”——表示小数点模式;
四、“,”与模式“0”一块儿使用,表示逗号
public static void main(String[] args){ double d1=123456.36987,d2=12.3698; DecimalFormat nf=new DecimalFormat("0000.000"); System.out.println("d1="+nf.format(d1)); System.out.println("d2="+nf.format(d2)); nf=new DecimalFormat("#"); System.out.println("d1="+nf.format(d1)); nf=new DecimalFormat(".#"); System.out.println("d1="+nf.format(d1)); nf=new DecimalFormat(".###"); System.out.println("d1="+nf.format(d1)); nf=new DecimalFormat("0000,0000.0000"); System.out.println("d1="+nf.format(d1)); }
运行结果:
d1=123456.370 d2=0012.370 d1=123456 d1=123456.4 d1=123456.37 d1=0012,3456.3699