java数字格式化

DecimalFormatNumberFormat 的一个具体子类,用于格式化十进制数字。该类设计有各种功能,使其能够解析和格式化任意语言环境中的数,包括对西方语言、阿拉伯语和印度语数字的支持。它还支持不同类型的数,包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)。所有这些内容都可以本地化。

DecimalFormat 类主要靠 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示有则填,没有就空着。 

double pi = 3.1415927;//pi
// 取一位整数
System.out.println(new DecimalFormat("0").format(pi));// 3
// 取一位整数和两位小数
System.out.println(new DecimalFormat("0.00").format(pi));// 3.14
// 取两位整数和三位小数,整数不足部分以0填补。
System.out.println(new DecimalFormat("00.000").format(pi));// 03.142
// 取所有整数部分
System.out.println(new DecimalFormat("#").format(pi));// 3
// 以百分比方式计数,并取两位小数
System.out.println(new DecimalFormat("#.##%").format(pi));// 314.16%

long c = 299792458;
// 显示为科学计数法,并取五位小数
System.out.println(new DecimalFormat("#.#####E0").format(c));// 2.99792E8
// 显示为两位整数的科学计数法,并取四位小数
System.out.println(new DecimalFormat("00.####E0").format(c));// 29.9792E7
// 每三位以逗号进行分隔。
System.out.println(new DecimalFormat(",###").format(c));// 299,792,458
// 将格式嵌入文本
System.out.println(new DecimalFormat("光速大小为每秒,###米。").format(c));
    import java.text.NumberFormat; 
    public class DecimalFormat{ 
        public static void main(String args[]) { 
            NumberFormat nf = NumberFormat.getPercentInstance(); 
            System.out.println(nf.format(0.47)); 
        } 
    } 

 输出:  47% 

NumberFormat用于读取并解析包含格式化数字的字符串

    import java.util.Locale; 
    import java.text.NumberFormat; 
    import java.text.ParseException; 
    public class DecimalFormat { 
        public static void main(String args[]) { 
            // 本地格式 
            NumberFormat nf1 = NumberFormat.getInstance(); 
            Object obj1 = null; 
            // 基于格式的解析 
            try { 
                obj1 = nf1.parse("1234,56"); 
            } 
            catch (ParseException e1) { 
                System.err.println(e1); 
            } 
            System.out.println(obj1); 
            // 德国格式 
            NumberFormat nf2 = 
                NumberFormat.getInstance(Locale.GERMAN); 
            Object obj2 = null; 
            // 基于格式的解析 
            try { 
                obj2 = nf2.parse("1234,56"); 
            } 
            catch (ParseException e2) { 
                System.err.println(e2); 
            } 
            System.out.println(obj2); 
        } 
    } 

 输出:

 123456 
    1234.56 

DecimalFormat是NumberFormat的一个子类,其实例被指定为特定的地区。因此,你可以使用NumberFormat.getInstance 指定一个地区,然后将结构强制转换为一个DecimalFormat对象。

 NumberFormat f = NumberFormat.getInstance(loc);
 if (f instanceof DecimalFormat) {
     ((DecimalFormat) f).setDecimalSeparatorAlwaysShown(true);
 }
    import java.text.DecimalFormat; 
    import java.text.NumberFormat; 
    import java.util.Locale; 
    public class DecimalFormat6 { 
        public static void main(String args[]) { 
            DecimalFormat df = null; 
            // 得到一个NumberFormat 对象并 
            // 强制转换为一个 DecimalFormat 对象 
            try { 
                df = (DecimalFormat) 
                    NumberFormat.getInstance(Locale.GERMAN); 
            } 
            catch (ClassCastException e) { 
                System.err.println(e); 
            } 
            // 设置格式模式 
            df.applyPattern("####.00000"); 
            // format a number 
            System.out.println(df.format(1234.56)); 
        } 
    } 

 applyPattern()方法设置格式模式,输出:1234,56000 

应用举例:

DecimalFormat df1 = new DecimalFormat("###.00"); 
System.out.println(df1.format(234234.234634)); 
System.out.println(df1.format(34.234634)); 
DecimalFormat df2 = new DecimalFormat("0.00E0000"); 
System.out.println(df2.format(23423.34234234)); 
DecimalFormat df3 = (DecimalFormat)NumberFormat.getInstance(Locale.CHINESE); 
df3.applyPattern("####.000"); 
System.out.println(df3.format(23423.34234234)); 
df3.applyPattern("00.0000%"); 
System.out.println(df3.format(0.5552445)); 
NumberFormat nf1 = NumberFormat.getInstance(); 
System.out.println(nf1.format(13423423.234234)); 
NumberFormat nf2 = NumberFormat.getPercentInstance();  System.out.println(nf2.format(0.55)); 

 输出: 
234234.23 
 34.23 
 2.34E0004 
 23423.342 
 55.5244% 
 13,423,423.234 
 55% 
如果要将带一定格式的字符串数字转化为数字类型,则值需要调用格式对象的parse()方法即可。
参考资料:http://flashdream8.iteye.com/blog/1664140

原文地址:https://www.cnblogs.com/ikuman/p/2680842.html