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

特殊模式字符

Java DecimalFormat类格式化数字

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) {
		}
	}
}

相关文章: