zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    遭遇奸商(主板篇)
    空调匹数与房间制冷时对应的适用面积
    MDIHelp!窗口BUG
    数据库主键设计之思考(转)
    显卡功耗表(转)
    PowerBuilder中的几种通用类
    PowerBuilder常用技巧
    当adobe flash player不能安装时
    vue常用语法
    简单的数据库命令
  • 原文地址:https://www.cnblogs.com/ikuman/p/2680842.html
Copyright © 2011-2022 走看看