DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。该类设计有各种功能,使其能够分析和格式化任意语言环境中的数,包括对西方语言、阿拉伯语和印度语数字的支持。它还支持不同类型的数,包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)。所有这些内容都可以本地化。
DecimalFormat 包含一个模式 和一组符号
例子:
//12.3 DecimalFormat df1 = new DecimalFormat("0.0"); //12.3 DecimalFormat df2 = new DecimalFormat("#.#"); //012.340 DecimalFormat df3 = new DecimalFormat("000.000"); //12.34 DecimalFormat df4 = new DecimalFormat("###.###"); System.out.println(df1.format(12.34)); System.out.println(df2.format(12.34)); System.out.println(df3.format(12.34)); System.out.println(df4.format(12.34));
//111,1112,3456.123 DecimalFormat format = new DecimalFormat("###,####.000"); System.out.println(format.format(111111123456.1227222)); Locale.setDefault(Locale.US); //111,111,123,456.123 DecimalFormat usFormat = new DecimalFormat("###,###.000"); System.out.println(usFormat.format(111111123456.1227222)); DecimalFormat addPattenFormat = new DecimalFormat(); //111,111,123,456.123 addPattenFormat.applyPattern("##,###.000"); System.out.println(addPattenFormat.format(111111123456.1227)); DecimalFormat zhiFormat = new DecimalFormat(); zhiFormat.applyPattern("0.000E0000"); //1.000E0004 System.out.println(zhiFormat.format(10000)); //1.235E0007 System.out.println(zhiFormat.format(12345678.345)); DecimalFormat percentFormat = new DecimalFormat(); percentFormat.applyPattern("#0.000%"); //30.522% System.out.println(percentFormat.format(0.3052222));
如果使用具有多个分组字符的模式,则最后一个分隔符和整数结尾之间的间隔才是使用的分组大小。所以 "#,##,###,####" == "######,####" == "##,####,####"。