查看原文:http://www.ibloger.net/article/51.html
NumberFormat 表示数字的格式化类, 即:可以按照本地的风格习惯进行数字的显示。
此类的定义如下:
public abstract class NumberFormat extends Format
MessageFormat
、DateFormat
、NumberFormat
是 Format 三个常用的子类,如果要想进一步完成一个好的国际化程序,则肯定需要同时使用这样三个类完成,根据不同的国家显示贷币的形式。
此类还是在java.text 包中,所以直接导入此包即可。
源码测试
package com.chinatelecom.web.trade.controller.pay;
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的子类