国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

格式化輸出數字

2019-11-18 13:24:37
字體:
來源:轉載
供稿:網友

  格式化輸出數字
  有時我們需要控制輸出的數字的格式,如何使用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 。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 加查县| 永清县| 阿图什市| 通辽市| 泸州市| 昌邑市| 彭州市| 淮南市| 雅安市| 西盟| 北宁市| 宜春市| 中牟县| 福贡县| 榆中县| 中超| 久治县| 西乡县| 永济市| 琼海市| 抚松县| 贵德县| 四会市| 彩票| 杨浦区| 邵阳县| 司法| 泊头市| 兴国县| 潼关县| 洛宁县| 额尔古纳市| 南召县| 孟州市| 雅江县| 庆阳市| 建湖县| 琼海市| 资阳市| 会东县| 沅江市|