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 。