程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java 格局化輸入數字的辦法

java 格局化輸入數字的辦法

編輯:關於JAVA

java 格局化輸入數字的辦法。本站提示廣大學習愛好者:(java 格局化輸入數字的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是java 格局化輸入數字的辦法正文


重要應用的類:java.text.DecimalFormat

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


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

  由於DecimalFormat繼續自NumberFormat。

  2。設定小數位數

  體系默許小數位數為3,如:


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

  輸入:12.346

  如今可以經由過程以下辦法把小數為設為兩位:


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

  則輸入為:12.35

  3。將數字轉化為百分比輸入,有以下兩種辦法:

  (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。設置小數為必需為2位


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

  輸入:1.20

有時我們須要掌握輸入的數字的格局,若何應用java的類庫做到這個呢?
或許你不關懷格局,然則你須要關懷你的法式可以在全球通用,像上面的如許一個簡略的語句是依附地域的:
    System.out.println(1234.56);
在美國,"." 是小數點,但在其它處所就紛歧定了。若何處置這個呢?
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
換句話說,在分歧的處所應用分歧的習氣表現數字。
    NumberFormat.getInstance()辦法前往NumberFormat的一個實例(現實上是NumberFormat詳細的一個子類,例如DecimalFormat), 這合適依據當地設置格局化一個數字。你也能夠應用非缺省的地域設置,例如德國。然後格局化辦法依據特定的地域規矩格局化數字。這個法式也能夠應用一個簡略的情勢:
    NumberFormat.getInstance().format(1234.56)
然則保留一個格局然後重用加倍有用。國際化是格局化數字時的一個年夜成績。
另外一個是對格局的有用掌握,例如指定小數部門的位數,上面是處理這個成績的一個簡略例子:


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

在這個例子中設置了數字的格局,應用像"####.000"的符號。這個形式意味著在小數點前有四個數字,假如不敷就空著,小數點後有三位數字,缺乏用0補齊。法式的輸入:
    1234.560
    1234,560
類似的,也能夠掌握指數情勢的格局,例如:


    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
關於百分數:


    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%
至此,你曾經看到了格局化數字的幾個分歧的技巧。另外一方面,若何讀取並解析包括格局化的數字的字符串?解析支撐包括在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"在美國被以為是一個偉大的整數123456,而在德國被以為是一個小數"1234.56"。
   還有格局化評論辯論的最初一個成績。在下面的例子中, DecimalFormat 和 NumberFormat 都被應用了。DecimalFormat 經常使用於取得很好的格局掌握,而NumberFormat 經常使用於指定分歧於當地的地域。若何聯合兩個類呢?
   謎底環繞著如許的現實:DecimalFormat是NumberFormat的一個子類,其實例被指定為特定的地域。是以,你可使用NumberFormat.getInstance 指定一個地域,然後將構造強迫轉換為一個DecimalFormat對象。文檔中提到這個技巧可以在年夜多情形下實用,然則你須要用try/catch 塊包抄強迫轉換以防轉換不克不及正常任務 (年夜概在異常不顯著得情形下應用一個奇怪的地域)。上面是一個如許的例子:


    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 。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved