【Java】java.text.NumberFormat 工具类

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的子类


赞(52) 打赏
未经允许不得转载:优客志 » JAVA开发
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏