DecimalFormat类 NumberFormat类

package com.test;

import java.text.DecimalFormat;
import java.text.NumberFormat;

public class FormatTest {

	public static void main(String[] args) {
		// System.out.print(format4(5));
		decimalFormatTest();
	}

	private static String formatNum(Double d) {
		String formatPattern = "#.0000";
		if (d == null) {
			return "-";
		} else {
			if (d == 0) {
				return "-";
			}
			return new DecimalFormat(formatPattern).format(d);
		}
	}

	private static String formatInt(Integer d) {
		String formatPattern = "#.0";
		if (d == null) {
			return "-";
		} else {
			if (d == 0) {
				return "-";
			}
			return new DecimalFormat(formatPattern).format(d);
		}
	}

	public static void decimalFormatTest() {
		//DecimalFormat df = new DecimalFormat("000,000.000¥");
		//DecimalFormat df = new DecimalFormat("###.###\u2030");
		//DecimalFormat df = new DecimalFormat("00.###%");
		//DecimalFormat df = new DecimalFormat("###,###.###¥");
		DecimalFormat df = new DecimalFormat("-###,###.###¥");
		String str = df.format(11222.84578);
		System.out.println(str);
		//结果:011,222.846¥
		//结果:11222845.78‰
		//结果:1122284.578%
		//结果: 11,222.846¥
		//结果: -11,222.846¥
	}

	public static String format3(Double f) {
		// 结果 5.00
		return String.format("%.2f", f);
	}

	public static String format4(int f) {
		NumberFormat nf = NumberFormat.getNumberInstance();
		nf.setMaximumFractionDigits(2);
		// setMaximumFractionDigits(int) 设置数值的小数部分允许的最大位数。
		// setMaximumIntegerDigits(int) 设置数值的整数部分允许的最大位数。
		// setMinimumFractionDigits(int) 设置数值的小数部分允许的最小位数。
		nf.setMinimumIntegerDigits(3); // 设置数值的整数部分允许的最小位数.
		return nf.format(f);
	}

	public static void format5() {
		// getPercentInstance() 返回当前缺省语言环境的百分比格式 输出 56%
		String format = NumberFormat.getPercentInstance().format(0.5555);
		System.out.println(format);
	}

	public static void format6() {
		// getCurrencyInstance()返回当前缺省语言环境的通用格式 ¥0.65
		String format = NumberFormat.getCurrencyInstance().format(0.654);
		System.out.println(format);
	}

	public static void format7() {
		// getInstance() 返回当前缺省语言环境的缺省数值格式。
		String format = NumberFormat.getInstance().format(0.684);
		System.out.println(format);
	}

}

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

此类的定义如下:

public abstract class NumberFormat extends Format

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

此类还是在java.text 包中,所以直接导入此包即可。

 t.println("格式化之后的数字:" + nf.format(10000000)) ;  

 

import java.text.* ;  
public class NumberFormatDemo01{  
    public static void main(String args[]){  
        NumberFormat nf = null ;        // 声明一个NumberFormat对象  
        nf = NumberFormat.getInstance() ;   // 得到默认的数字格式化显示  
        System.out.println("格式化之后的数字:" + nf.format(10000000)) ;  
        System.out.println("格式化之后的数字:" + nf.format(1000.345)) ;  
    }  
};  

 

是NumberFormat 类的子类,主要的作用是用来格式化数字使用,当然,在格式化数字的时候要比直接使用NumberFormat 更加方便,因为可以直接指定按用户自定义方式进行格式化操作,与之前讲的SimpleDateFormat类似,如果要想进行自定义格式化操作,则必须指定格式化操作的模板。

 

import java.text.* ;  
class FormatDemo{  
    public void format1(String pattern,double value){   // 此方法专门用于完成数字的格式化显示  
        DecimalFormat df = null ;           // 声明一个DecimalFormat类的对象  
        df = new DecimalFormat(pattern) ;   // 实例化对象,传入模板  
        String str = df.format(value) ;     // 格式化数字  
        System.out.println("使用" + pattern  
            + "格式化数字" + value + ":" + str) ;  
    }  
};  
public class NumberFormatDemo02{  
    public static void main(String args[]){  
        FormatDemo demo = new FormatDemo() ;    // 格式化对象的类  
        demo.format1("###,###.###",111222.34567) ;  
        demo.format1("000,000.000",11222.34567) ;  
        demo.format1("###,###.###¥",111222.34567) ;  
        demo.format1("000,000.000¥",11222.34567) ;  
        demo.format1("##.###%",0.345678) ;  
        demo.format1("00.###%",0.0345678) ;  
        demo.format1("###.###\u2030",0.345678) ;  
    }  
};  

 

java.lang.Object
  java.text.Format
      java.text.NumberFormat
          java.text.DecimalFormat
 

DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。该类设计有各种功能,使其能够解析和格式化任意语言环境中的数,包括对西方语言、阿拉伯语和印度语数字的支持。它还支持不同类型的数,包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)。所有这些内容都可以本地化。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值