java 数字的格式化

java 數字的格式化選擇:java.text.DecimalFormat 类。

其中在格式化的過程中會存在捨入的現象。其默認捨入的方式爲:

RoundingMode.HALF_EVEN

如果需要修改捨入方式:通過下面的方法進行:

setRoundingMode(RoundingMode roundingMode) 
          设置在此 DecimalFormat 中使用的 RoundingMode。
以下爲JDK中對於模式字符的介紹。

符号 位置 本地化? 含义
0 数字 阿拉伯数字
# 数字字 阿拉伯数字,如果不存在则显示为 0
. 数字 小数分隔符或货币小数分隔符
- 数字 减号
, 数字 分组分隔符
E 数字 分隔科学计数法中的尾数和指数。在前缀或后缀中无需加引号。
; 子模式边界 分隔正数和负数子模式
% 前缀或后缀 乘以 100 并显示为百分数
\u2030 前缀或后缀 乘以 1000 并显示为千分数
¤ (\u00A4) 前缀或后缀 货币记号,由货币符号替换。如果两个同时出现,则用国际货币符号替换。如果出现在某个模式中,则使用货币小数分隔符,而不使用小数分隔符。
' 前缀或后缀 用于在前缀或或后缀中为特殊字符加引号,例如 "'#'#" 将 123 格式化为 "#123"。要创建单引号本身,请连续使用两个单引号:"# o''clock"。 

import java.text.DecimalFormat;
import java.text.ParseException;

/**
 * <br>
 * 
 * @author:Administrator
 * @time:2013-1-22 下午08:08:48
 * @company oddTech
 * @version 1.0
 * @創建日期:2013-1-22 下午08:08:48
 * @修改日期: <br>
 * 
 */
public class DecimalFormatTest {

	public static void main(String[] args) throws ParseException {
		Float testNum = new Float(123234.409729988);
		DecimalFormat decimalFormat = new DecimalFormat();
		System.out.println("默认格式化:"+decimalFormat.format(testNum));
		
		DecimalFormat decimalFormat1 = new DecimalFormat("#####");
		System.out.println("'#####' 的格式化:"+decimalFormat1.format(testNum));// 表示不用分组的纯正整数 的格式化
		
		DecimalFormat decimalFormat2 = new DecimalFormat("#####.##");
		System.out.println("'#####.##' 的格式化:"+decimalFormat2.format(testNum));// 表示保留两位小数,整数部分不分组的格式化
		
		DecimalFormat decimalFormat3 = new DecimalFormat("####,####");
		System.out.println("'####,####' 的格式化:"+decimalFormat3.format(testNum));//表示每四位做分组。
		
		DecimalFormat decimalFormat4 = new DecimalFormat("##,###,####.##");
		System.out.println("'##,###,####.##' 的格式化:"+decimalFormat4.format(testNum));// 表示保留两位小数,整数部分每4位做分组。如果使用具有多个分组字符的模式,则最后一个分隔符和整数结尾之间的间隔才是使用的分组大小
		Float testNum2 = new Float(11.409729988);
		DecimalFormat decimalFormat5 = new DecimalFormat("000.0#");
		decimalFormat5.setMinimumFractionDigits(6);// 设置某个数字的整数部分中所允许的最大数字位数
		System.out.println("'000.0#' 的格式化"+decimalFormat5.format(testNum2));//setMaximumIntegerDigits 有效
		
		DecimalFormat decimalFormat6 = new DecimalFormat();
		decimalFormat6.setMinimumIntegerDigits(8);//设置某个数字的整数部分中所允许的最小数字位数
		System.out.println("默认格式化 並設置整數部分所允許的最小數字個數爲8:"+decimalFormat6.format(testNum));//setMinimumIntegerDigits 無效
		decimalFormat6.setMaximumIntegerDigits(2);//设置某个数字的整数部分中所允许的最小数字位数
		System.out.println("默认格式化 並設置整數部分所允許的最大數字個數爲2:"+decimalFormat6.format(testNum));//setMinimumIntegerDigits 無效
		
		System.out.println(decimalFormat6.parseObject("123,234.406"));// 無效

	}

}
執行結果如下:
默认格式化:123,234.406
'#####' 的格式化:123234
'#####.##' 的格式化:123234.41
'####,####' 的格式化:12,3234
'##,###,####.##' 的格式化:12,3234.41
'000.0#' 的格式化011.409730
默认格式化 並設置整數部分所允許的最小數字個數爲8:00,123,234.406
默认格式化 並設置整數部分所允許的最大數字個數爲2:34.406




你可能感兴趣的:(格式化,数字格式化,DecimalFormat)