欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java之DecimalFormat用法

程序员文章站 2022-11-21 15:50:59
1. 在实践中,有时会遇到数字格式化的需求,比如订单号的某一段必须为4位,不足的用0占位,或者输出需要带上百分号,单位,货币符号等,Java的DecimalFormat能和好的支持。 2. 实例化DecimalFormat后,并给实例对象设置格式的pattern字符串(两种方式)。 3. 调用Dec ......

1. 在实践中,有时会遇到数字格式化的需求,比如订单号的某一段必须为4位,不足的用0占位,或者输出需要带上百分号,单位,货币符号等,java的decimalformat能和好的支持。

2. 实例化decimalformat后,并给实例对象设置格式的pattern字符串(两种方式)。

decimalformat  myformat = new decimalformat(string pattern);  // 带格式参数,实例化格式化器
decimalformat  myformat = new decimalformat();  //  不带格式参数,实例化格式化器
myformat.applypattern(string pattern);  //  为格式化器设置格式参数

3. 调用decimalformat对象的format()方法进行格式化操作,返回字符串。

string out= myformat.format(double value);  //  格式化数字

4. pattern格式化表达式说明:

0 :如果该位存在数字则输出该数字,如果不存在则输出0;
# :如果该位存在数字则输出该数字,不存在不做任何输出;
. :小数分隔符;
- :负号;
,:分组分隔符;
e :科学计数法中分隔位数和指数;
% :放置在数字的前缀或后缀,将数字乘以100,以百分数输出;
\u2030:放置在数字的前缀或后缀,将数字乘以1000,以千分数输出;
\u00a4: 放置在数字的前缀或后缀,作为货币记号;
' : 本符号为单引号,当上述特殊符号出现在数字中时,应为特殊符号添加单引号,系统会将该特殊符号当做普通符号处理;

5. 格式化举例

public static void fun(string pattern, double value) {
     // decimalformat formater = new decimalformat(pattern);
     decimalformat formater = new decimalformat(pattern);
     formater .applypattern(pattern);
     system.err.println(formater .format(value));
}
public static void main (string []args) {
   fun("#,###.###", 123456.789);  //123,456.789
   fun("00000000.000kg", 123456.789);  //00123456.789kg
   fun("000000.000", 123.78);  // 000123.780
   fun("#.#%", 0.789);  // 78.9%
   fun("#.##", 123456.789);  //  123456.79
   fun("#.00\u2030", 0.789);  //  789.00‰
   fun("#\u00a4", 1234);  //  1234¥
}

6. decimalformat还提供对数字以逗号分段功能:

decimalformat myformat = new decimalformat();
myformat.setgroupingsize(3); //用逗号进行分段时,每个分段的大小,此处为3;
myformat.setgroupingused(false/true); //当为false时上述设置的分组大小无效,为true时才能进行分组;

7. 分段举例:

public static void fun0(double value) {
    decimalformat myformat = new decimalformat();
    myformat.setgroupingsize(3);  //设置分段间距为3
    system.err.println(myformat.format(value));
}
public static void fun1(double value)  {
    decimalformat myformat = new decimalformat();
    myformat.setgroupingsize(3);  //设置分段间距为3
    myformat.setgroupingused(false);  //不分段
    system.err.println(myformat.format(value));
}
public static void main (string []args) {
    fun0(123456.789);  //123,456.789
    fun1(123456.789);  //123456.789
}