NumberFormat 表示数字的格式化类, 即:可以按照本地的风格习惯进行数字的显示。
此类的定义如下:
public abstract class NumberFormat extends Format
MessageFormat
、DateFormat
、NumberFormat
是 Format 三个常用的子类,如果要想进一步完成一个好的国际化程序,则肯定需要同时使用这样三个类完成,根据不同的国家显示贷币的形式。
此类还是在java.text 包中,所以直接导入此包即可。
源码测试
import java.text.NumberFormat; public class Main { public static void main(String[] args) { Double myNumber = 23323.3323232323; Double test = 0.3434; // getInstance() // 返回当前缺省语言环境的缺省数值格式。 String myString = NumberFormat.getInstance().format(myNumber); System.out.println(myString); // 23,323.332 // getCurrencyInstance()返回当前缺省语言环境的货币格式 myString = NumberFormat.getCurrencyInstance().format(myNumber); System.out.println(myString); // ¥23,323.33 // getNumberInstance() 返回当前缺省语言环境的通用数值格式。 myString = NumberFormat.getNumberInstance().format(myNumber); System.out.println(myString); // 23,323.332 // getPercentInstance() 返回当前缺省语言环境的百分比格式。 myString = NumberFormat.getPercentInstance().format(test); System.out.println(myString); // 34% // setMaximumFractionDigits(int) 设置数值的小数部分允许的最大位数。 // setMaximumIntegerDigits(int) 设置数值的整数部分允许的最大位数。 // setMinimumFractionDigits(int) 设置数值的小数部分允许的最小位数。 // setMinimumIntegerDigits(int) 设置数值的整数部分允许的最小位数. NumberFormat format = NumberFormat.getInstance(); format.setMaximumFractionDigits(5); // 小数部分允许的最大位数 format.setMinimumFractionDigits(3); // 小数部分允许的最小位数 format.setMaximumIntegerDigits(10); // 整数部分允许的最大位数 format.setMinimumIntegerDigits(3); // 整数部分允许的最小位数 System.out.println(format.format(2132323213.23866666666)); // 2,132,323,213.23867 System.out.println(format.format(2132323213.23)); // 2,132,323,213.230 System.out.println(format.format(13123122132323213.23)); // 2,132,323,214.000 System.out.println(format.format(13.23)); // 013.230 } }
查询源码即可一目了然如何设置国际化,部分源码如下
/** * Returns a currency format for the current default locale. */ public final static NumberFormat getCurrencyInstance() { return getInstance(Locale.getDefault(Locale.Category.FORMAT), CURRENCYSTYLE); } /** * Returns a currency format for the specified locale. */ public static NumberFormat getCurrencyInstance(Locale inLocale) { return getInstance(inLocale, CURRENCYSTYLE); } /** * Returns a percentage format for the current default locale. */ public final static NumberFormat getPercentInstance() { return getInstance(Locale.getDefault(Locale.Category.FORMAT), PERCENTSTYLE); } /** * Returns a percentage format for the specified locale. */ public static NumberFormat getPercentInstance(Locale inLocale) { return getInstance(inLocale, PERCENTSTYLE); } /** * Returns a scientific format for the current default locale. */ /*public*/ final static NumberFormat getScientificInstance() { return getInstance(Locale.getDefault(Locale.Category.FORMAT), SCIENTIFICSTYLE); } /** * Returns a scientific format for the specified locale. */ /*public*/ static NumberFormat getScientificInstance(Locale inLocale) { return getInstance(inLocale, SCIENTIFICSTYLE); }
所以,这里可以指定任何一个国家的显示方式,比如美国,德国,中国,写法例如
NumberFormat numberFormat = NumberFormat.getCurrencyInstance(Locale.CHINA); numberFormat.setMinimumFractionDigits(0); numberFormat.format(price);
除了NumberFormat,还有用的很多的Decimalformat ,Decimalformat是NunberFormat的子类