麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

格式化輸出數字

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 。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久老司机精品视频 | 少妇色诱麻豆色哟哟 | 国产精品成人免费一区久久羞羞 | 国产成人免费高清激情视频 | 一级毛片免费高清 | 免费a级毛片永久免费 | 久草手机在线 | 午夜视频在线观看91 | 久久男人视频 | a集毛片 | 欧美日韩免费在线观看视频 | 日本a级一区 | 国产papa| 国产美女视频黄a视频免费 日韩黄色在线播放 | 免费专区 - 91爱爱 | 福利一区二区三区视频在线观看 | 91亚洲免费视频 | 久草在线视频福利 | www.99热视频| 欧美人的天堂一区二区三区 | 国产午夜精品久久久久婷 | 国产精品99久久久久久董美香 | 久久精品成人免费国产片桃视频 | 黄色影院一级片 | 鲁丝一区二区二区四区 | 久久人人做 | 中国成人在线视频 | 99精品视频在线观看免费播放 | 国产午夜精品在线 | 中国女警察一级毛片视频 | 中国美女一级黄色大片 | 久久99精品久久久久久236 | 免费看成人av | 久久精品欧美视频 | 国产午夜亚洲精品午夜鲁丝片 | 泰剧19禁啪啪无遮挡大尺度 | 黄视频网站免费在线观看 | 久久草在线观看视频 | 九九热久久免费视频 | 国产精品久久久久久久av | 多人乱大交xxxxx变态 |