官方文档:
DecimalFormat (Java Platform SE 8 ) https://docs.oracle.com/javase/8/docs/api/java/text/DecimalFormat.html
概述
DecimalFormat类能够解析和格式化任意语言环境中的数,包括对西方语言、阿拉伯语和印度语数字的支持。它还支持不同类型的数,包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)。所有这些内容都可以本地化
特殊模式字符
PS:官方文档的0和#的含义与此表相反,个人实验出官方文档的说明并不正确
代码
import java.text.DecimalFormat;
public class DecimalFormatTest {
public static void main(String[] args) {
/* 整数位和小数位 */
DecimalFormat format = new DecimalFormat("00000.00");
System.out.println(format.format(6789.8765));// 06789.88
/* 整数位分组 */
DecimalFormat format1 = new DecimalFormat(",####.##");
System.out.println(format1.format(123456789.9876543));// 1,2345,6789.99
/* 百分数或千分数 */
DecimalFormat format2 = new DecimalFormat("#0.00%");
System.out.println(format2.format(0.008888));// 0.89%
DecimalFormat format3 = new DecimalFormat("#0.00\u2030");
System.out.println(format3.format(0.008888));// 8.89‰
/* 科学计数法 */
DecimalFormat format4 = new DecimalFormat("0.##E0");
System.out.println(format4.format(123456789));// 1.23E8
/* 货币 */
DecimalFormat format5 = new DecimalFormat("\u00A4#0.##");
System.out.println(format5.format(0.3456));// ¥0.35
/* 解析数字 */
DecimalFormat format6 = new DecimalFormat(",#");
System.out.println(format6.parse("1,234,567.89$999"));// 1234567.89
}
}
代码2
import java.text.*;
public class DecimalFormatTest2 {
public static void main(String args[]) {
double number;
DecimalFormat df = new DecimalFormat();
String result;
number = 10.22222;
df.applyPattern("000.##");
result = df.format(number);
System.out.println(number + "格式化为整数最少3位,小数最多2位=" + result);
number = 10000000.22222;
df.applyPattern(",#00.##");
result = df.format(number);
System.out.printf("%f格式化为整数最少2位,整数部分按千分组,小数最多2位=", number);
System.out.println(result);
number = 0.008888;
df.applyPattern("0.00%");
result = df.format(number);
System.out.println(number + "格式化为百分数="+result);
df.applyPattern("0.00\u2030");
result = df.format(number);
System.out.println(number + "格式化为千分数="+result);
number = 12222.2222;
df.applyPattern("0.00E0");
result = df.format(number);
System.out.println(number + "格式化为科学计数法="+result);
String money = "1,222,333.444¥";
df.applyPattern(",#");
try {
Number num = df.parse(money);
System.out.println(money + "转化成数字=" + num.doubleValue());
} catch (Exception exp) {
}
}
}