java.text.NumberFormat 工具类

查看原文:http://www.ibloger.net/article/51.html

NumberFormat 表示数字的格式化类, 即:可以按照本地的风格习惯进行数字的显示。

此类的定义如下:

public abstract class NumberFormat extends Format

这里写图片描述

MessageFormatDateFormatNumberFormatFormat 三个常用的子类,如果要想进一步完成一个好的国际化程序,则肯定需要同时使用这样三个类完成,根据不同的国家显示贷币的形式。

此类还是在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的子类

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值