最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 格式化輸出數(shù)字的方法

 更新時間:2014年01月19日 13:14:03   作者:  
在實際工作中,常常需要設定數(shù)字的輸出格式,如以百分比的形式輸出,或者設定小數(shù)位數(shù)等,現(xiàn)稍微總結如下

主要使用的類:java.text.DecimalFormat

  1。實例化對象,可以用如下兩種方法:

復制代碼 代碼如下:

  DecimalFormat df=(DecimalFormat)NumberFormat.getInstance();
  DecimalFormat df1=(DecimalFormat) DecimalFormat.getInstance();

  因為DecimalFormat繼承自NumberFormat。

  2。設定小數(shù)位數(shù)

  系統(tǒng)默認小數(shù)位數(shù)為3,如:

復制代碼 代碼如下:

  DecimalFormat df=(DecimalFormat)NumberFormat.getInstance();
  System.out.println(df.format(12.3456789));

  輸出:12.346

  現(xiàn)在可以通過如下方法把小數(shù)為設為兩位:

復制代碼 代碼如下:

  df.setMaximumFractionDigits(2);
  System.out.println(df.format(12.3456789));

  則輸出為:12.35

  3。將數(shù)字轉化為百分比輸出,有如下兩種方法:

  (1)

復制代碼 代碼如下:

  df.applyPattern("##.##%");
  System.out.println(df.format(12.3456789));
  System.out.println(df.format(1));
  System.out.println(df.format(0.015));

  輸出分別為:1234.57%  100%    1.5%

  (2)

復制代碼 代碼如下:

  df.setMaximumFractionDigits(2);
  System.out.println(df.format(12.3456789*100)+"%");
  System.out.println(df.format(1*100)+"%");
  System.out.println(df.format(0.015*100)+"%");

  輸出分別為:

  1,234.57%   100%   1.5%

  4。設置分組大小

復制代碼 代碼如下:

  DecimalFormat df1=(DecimalFormat) DecimalFormat.getInstance();
  df1.setGroupingSize(2);
  System.out.println(df1.format(123456789));

  輸出:1,23,45,67,89

  還可以通過df1.setGroupingUsed(false);來禁用分組設置,如:

復制代碼 代碼如下:

  DecimalFormat df1=(DecimalFormat) DecimalFormat.getInstance();
  df1.setGroupingSize(2);
  df1.setGroupingUsed(false);
  System.out.println(df1.format(123456789));

  輸出:123456789

  5。設置小數(shù)為必須為2位

復制代碼 代碼如下:

  DecimalFormat df2=(DecimalFormat) DecimalFormat.getInstance();
  df2.applyPattern("0.00");
  System.out.println(df2.format(1.2));

  輸出:1.20

有時我們需要控制輸出的數(shù)字的格式,如何使用java的類庫做到這個呢?
也許你不關心格式,但是你需要關心你的程序可以在全世界通用,像下面的這樣一個簡單的語句是依賴地區(qū)的:
    System.out.println(1234.56);
在美國,"." 是小數(shù)點,但在其它地方就不一定了。如何處理這個呢?
java.text 包中的一些包可以處理這類問題。下面的簡單范例使用那些類解決上面提出的問題:

復制代碼 代碼如下:

 import java.text.NumberFormat;
    import java.util.Locale;
    public class DecimalFormat1 {
        public static void main(String args[]) {
            // 得到本地的缺省格式
            NumberFormat nf1 = NumberFormat.getInstance();
            System.out.println(nf1.format(1234.56));
            // 得到德國的格式
            NumberFormat nf2 =
             NumberFormat.getInstance(Locale.GERMAN);
            System.out.println(nf2.format(1234.56));
        }     }
 

   如果你在美國,運行程序后輸出:
    1,234.56
    1.234,56
換句話說,在不同的地方使用不同的習慣表示數(shù)字。
    NumberFormat.getInstance()方法返回NumberFormat的一個實例(實際上是NumberFormat具體的一個子類,例如DecimalFormat), 這適合根據(jù)本地設置格式化一個數(shù)字。你也可以使用非缺省的地區(qū)設置,例如德國。然后格式化方法根據(jù)特定的地區(qū)規(guī)則格式化數(shù)字。這個程序也可以使用一個簡單的形式:
    NumberFormat.getInstance().format(1234.56)
但是保存一個格式然后重用更加有效。國際化是格式化數(shù)字時的一個大問題。
另一個是對格式的有效控制,例如指定小數(shù)部分的位數(shù),下面是解決這個問題的一個簡單例子:

復制代碼 代碼如下:

    import java.text.DecimalFormat;
    import java.util.Locale;
    public class DecimalFormat2 {
        public static void main(String args[]) {
            // 得到本地的缺省格式
            DecimalFormat df1 = new DecimalFormat("####.000");
            System.out.println(df1.format(1234.56));
            // 得到德國的格式
            Locale.setDefault(Locale.GERMAN);
            DecimalFormat df2 = new DecimalFormat("####.000");
            System.out.println(df2.format(1234.56));
        }
    }

在這個例子中設置了數(shù)字的格式,使用像"####.000"的符號。這個模式意味著在小數(shù)點前有四個數(shù)字,如果不夠就空著,小數(shù)點后有三位數(shù)字,不足用0補齊。程序的輸出:
    1234.560
    1234,560
相似的,也可以控制指數(shù)形式的格式,例如:

復制代碼 代碼如下:

    import java.text.DecimalFormat;
    public class DecimalFormat3 {
        public static void main(String args[]) {
            DecimalFormat df = new DecimalFormat("0.000E0000");
            System.out.println(df.format(1234.56));
        }
    }

輸出:
    1.235E0003
對于百分數(shù):

復制代碼 代碼如下:

    import java.text.NumberFormat;
    public class DecimalFormat4 {
        public static void main(String args[]) {
            NumberFormat nf = NumberFormat.getPercentInstance();
            System.out.println(nf.format(0.47));
        }
    }

輸出:
    47%
至此,你已經(jīng)看到了格式化數(shù)字的幾個不同的技術。另一方面,如何讀取并解析包含格式化的數(shù)字的字符串?解析支持包含在NumberFormat中。例如:

復制代碼 代碼如下:

    import java.util.Locale;
    import java.text.NumberFormat;
    import java.text.ParseException;
    public class DecimalFormat5 {
        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);
        }
    }

這個例子分兩部分,都是解析一個字符串:"1234,56"。第一部分使用本地格式解析,第二部分使用德國格式解析。當程序在美國運行,結果是:
    123456
    1234.56
換句話說,"1234,56"在美國被認為是一個巨大的整數(shù)123456,而在德國被認為是一個小數(shù)"1234.56"。
   還有格式化討論的最后一個問題。在上面的例子中, DecimalFormat 和 NumberFormat 都被使用了。DecimalFormat 常用于獲得很好的格式控制,而NumberFormat 常用于指定不同于本地的地區(qū)。如何結合兩個類呢?
   答案圍繞著這樣的事實:DecimalFormat是NumberFormat的一個子類,其實例被指定為特定的地區(qū)。因此,你可以使用NumberFormat.getInstance 指定一個地區(qū),然后將結構強制轉換為一個DecimalFormat對象。文檔中提到這個技術可以在大多情況下適用,但是你需要用try/catch 塊包圍強制轉換以防轉換不能正常工作 (大概在非常不明顯得情況下使用一個奇異的地區(qū))。下面是一個這樣的例子:

復制代碼 代碼如下:

    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));
        }
    }

getInstance() 方法獲得格式,然后調用applyPattern()方法設置格式模式,輸出:
    1234,56000
如果你不關心國際化,可以直接使用DecimalFormat 。

相關文章

  • Spring MVC 接口 ResponseBodyAdvice 及其應用最佳實踐記錄

    Spring MVC 接口 ResponseBodyAdvice 及其應用最佳實

    ResponseBodyAdvice?是 Spring MVC 提供的一個強大接口,允許你在響應體被寫入 HTTP 響應之前對其進行全局處理,下面我將全面介紹它的工作原理、使用場景和最佳實踐,感興趣的朋友一起看看吧
    2025-04-04
  • Spring?Boot?利用?XML?方式整合?MyBatis

    Spring?Boot?利用?XML?方式整合?MyBatis

    這篇文章主要介紹了Spring?Boot?利用?XML?方式整合?MyBatis,文章圍繞主題的相關資料展開詳細的內(nèi)容介紹,具有一定的參考價值,組要的小伙伴可以參考一下
    2022-05-05
  • Java遍歷集合的三種方式

    Java遍歷集合的三種方式

    本文主要對于遍歷集合獲取其對象,總結的三種簡單的方式進行介紹,文章中舉了兩個案例進行對比,具有很好的參考價值,下面就跟小編一起來看下吧
    2016-12-12
  • 通過Java代碼來創(chuàng)建view的方法

    通過Java代碼來創(chuàng)建view的方法

    本文給大家分享通過java代碼創(chuàng)建view的方法,以TextView為例創(chuàng)建控件的方法,需要的的朋友參考下吧
    2017-08-08
  • 淺談一下Java的線程并發(fā)

    淺談一下Java的線程并發(fā)

    大家好,本篇文章主要講的是淺談一下Java的線程并發(fā),感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • 如何實現(xiàn)Java線程安全問題

    如何實現(xiàn)Java線程安全問題

    這篇文章主要介紹了如何實現(xiàn)Java線程安全問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • MyBatis-Plus攔截器實現(xiàn)數(shù)據(jù)權限控制的方法

    MyBatis-Plus攔截器實現(xiàn)數(shù)據(jù)權限控制的方法

    MyBatis-Plus是一款基于MyBatis的增強工具,它提供了一些便捷的功能和增強的查詢能力,數(shù)據(jù)權限控制是在系統(tǒng)中對用戶訪問數(shù)據(jù)進行限制的一種機制,這篇文章主要給大家介紹了關于MyBatis-Plus攔截器實現(xiàn)數(shù)據(jù)權限控制的相關資料,需要的朋友可以參考下
    2024-01-01
  • Sharding-Proxy分庫分表和數(shù)據(jù)加密使用場景分析

    Sharding-Proxy分庫分表和數(shù)據(jù)加密使用場景分析

    這篇文章主要介紹了Sharding-Proxy分庫分表和數(shù)據(jù)加密使用經(jīng)驗分享,通過場景模擬分析結合示例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • SpringBoot中整合knife4j接口文檔的實踐

    SpringBoot中整合knife4j接口文檔的實踐

    這篇文章主要介紹了SpringBoot中整合knife4j接口文檔的實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • springboot vue 跨域問題的解決

    springboot vue 跨域問題的解決

    這篇文章主要介紹了springboot vue 跨域問題的解決,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10

最新評論

巴彦淖尔市| 拉萨市| 西充县| 长海县| 溆浦县| 绥宁县| 沅江市| 犍为县| 赤壁市| 祥云县| 黄平县| 玉龙| 巴彦淖尔市| 岑巩县| 岑溪市| 嘉禾县| 温州市| 抚松县| 建湖县| 顺义区| 鄂托克旗| 南安市| 昌图县| 东安县| 景宁| 贡嘎县| 常德市| 云和县| 涞水县| 织金县| 米脂县| 扎兰屯市| 百色市| 辉县市| 通州区| 郸城县| 土默特左旗| 宜昌市| 昆明市| 托克逊县| 郴州市|