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)。所有这些内容都可以本地化。