您的位置:首页 > 编程语言 > Java开发

java 数字的格式化

2013-01-22 20:39 309 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息