DecimalFormat 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
DecimalFormat 是其具體子類 NumberFormat ,負責格式化十進位數字。
[Android.Runtime.Register("java/text/DecimalFormat", DoNotGenerateAcw=true)]
public class DecimalFormat : Java.Text.NumberFormat
[<Android.Runtime.Register("java/text/DecimalFormat", DoNotGenerateAcw=true)>]
type DecimalFormat = class
inherit NumberFormat
- 繼承
- 屬性
備註
DecimalFormat 是其具體子類 NumberFormat ,負責格式化十進位數字。 它具備多項功能,旨在使得在任何地方都能解析和格式化數字,包括支援西方、阿拉伯和印度數字。 它也支援多種數字,包括整數(123)、固定點數(123.4)、科學符號(1.23E4)、百分比(12%)及貨幣金額(123美元)。 這些都可以在地化。
要取得特定區域(包括預設區域)的 a NumberFormat ,請呼叫 的工廠 NumberFormat方法之一,例如 getInstance()。 一般而言,不要直接呼叫 DecimalFormat 建構子,因為 NumberFormat 工廠方法可能會回傳除 DecimalFormat的子類別。 如果你需要自訂格式物件,可以這樣做:
<引用>
NumberFormat f = NumberFormat.getInstance(loc);
if (f instanceof DecimalFormat) {
((DecimalFormat) f).setDecimalSeparatorAlwaysShown(true);
}
</區塊引用>
A DecimalFormat 包含一個 <em>模式</em> 以及一組 <em>符號</em>。 模式可直接使用 applyPattern(),或透過 API 方法間接設定。 符號被儲存在物件 DecimalFormatSymbols 中。 使用 NumberFormat 工廠方法時,模式與符號會從局部化 ResourceBundle的 s 讀取。
<h2>圖案</h2>
DecimalFormat 模式的語法如下: <blockquote>
<i>Pattern:</i>
<i>PositivePattern</i>
<i>PositivePattern</i> ; <i>NegativePattern</i>
<i>PositivePattern:</i>
<i>Prefix<sub>opt</sub></i> <i>Number</i> <i>Suffix<sub>opt</sub></i>
<i>NegativePattern:</i>
<i>Prefix<sub>opt</sub></i> <i>Number</i> <i>Suffix<sub>opt</sub></i>
<i>Prefix:</i>
any Unicode characters except \uFFFE, \uFFFF, and special characters
<i>Suffix:</i>
any Unicode characters except \uFFFE, \uFFFF, and special characters
<i>Number:</i>
<i>Integer</i> <i>Exponent<sub>opt</sub></i>
<i>Integer</i> . <i>Fraction</i> <i>Exponent<sub>opt</sub></i>
<i>Integer:</i>
<i>MinimumInteger</i>
#
# <i>Integer</i>
# , <i>Integer</i>
<i>MinimumInteger:</i>
0
0 <i>MinimumInteger</i>
0 , <i>MinimumInteger</i>
<i>Fraction:</i>
<i>MinimumFraction<sub>opt</sub></i> <i>OptionalFraction<sub>opt</sub></i>
<i>MinimumFraction:</i>
0 <i>MinimumFraction<sub>opt</sub></i>
<i>OptionalFraction:</i>
# <i>OptionalFraction<sub>opt</sub></i>
<i>Exponent:</i>
E <i>MinimumExponent</i>
<i>MinimumExponent:</i>
0 <i>MinimumExponent<sub>opt</sub></i>
</區塊引用>
一個DecimalFormat模式包含一個正子模式和負子模式,例如。 "#,##0.00;(#,##0.00)" 每個子模式都有前綴、數字部分和後綴。 負子模式為可選;若缺少,則以負號'-' U+002D HYPHEN-MINUS()為前綴的正子模式作為負子模式。 也就是說, "0.00" 單獨 等價 "0.00;-0.00"於 。 若存在明確的負面子模式,則僅用於指定負面前綴與後綴;數字數量、最小數字及其他特徵都與正模式相同。 這表示 會 "#,##0.0#;(#)" 產生與 "#,##0.0#;(#,##0.0#)"完全相同的行為。
用於無限大、數字、分組分隔符、十進位分隔符等的前綴、後綴及各種符號可設定為任意值,且在格式化時會正確顯示。 然而,必須注意符號與字串之間不衝突,否則解析將不可靠。 例如,正負前綴或後綴必須區分 DecimalFormat.parse() ,才能區分正負值。 (若兩者相同,則 DecimalFormat 行為將視為未指定負子模式。)另一個例子是,十進位分隔符與分組分隔符必須是不同的字元,否則解析將無法進行。
分組分隔符通常用於數千人,但在某些國家則用於分隔萬人。 分組大小是分組字元間的固定數字,例如1億字元為3,1000000字元為4字,1000000字元為4字。 如果你提供一個包含多個分組字元的圖案,則使用最後一個與整數結尾之間的區間。 所以"#,##,###,####" == "######,####" == "##,####,####"。
<h3>“special_pattern_character”>特殊圖案字元</h3>
模式中的許多字元被字面理解;它們在解析時會被匹配,格式化時輸出則保持不變。 特殊字元則代表其他字元、字串或字元類別。 除非另有註明,否則若要以字面形式出現在前綴或後綴中,必須引用這些詞。
此處列出的字元用於非本地化的圖案。 在地化模式則使用來自該格式化器 DecimalFormatSymbols 物件的對應字元,這些字元失去特殊地位。 兩個例外是貨幣符號和報價,這兩者並非本地化。
<blockquote><table class=“striped”caption>< style=“display:none”>圖表,顯示符號、位置、在地化及意義。</caption><thead><tr><th scope=“col” style=“text-align:left”>Symbol <th scope =“col” style=“text-align:left”>Location <th scope=“col” style=“text-align:left”>在地化?
<th scope=“col” style=“text-align:left”>,意思是 </thead><tbody><tr style=“vertical-align:top”><th scope=“row”>0<td>編號 <td>是<的 td>數字 <tr style=“vertical-align: top”><th scope=“row”>#<td>數字 <td>是的 td<td 數字>,0 顯示為缺失 <tr style=“vertical-align:top”><th scope=“row”>.<td>編號 <td是的 >td<十進位分隔符或貨幣分隔符 >tr style=“vertical-align: top”<>th scope=“row”<>- td<編號 >td<是的 >td<減號 >tr style=“vertical-align:top”<>th scope=“row”<>,td<數字 >td<是>的 td<分隔符或貨幣分隔符 >tr style=“vertical-align: top”<>th scope=“row”<>Etd<>數字 <td>是的 <td>在科學記號中分隔尾數與指數。
<em>不必以前綴或後綴引用。</em>tr style=“vertical-align:top”<>th scope=“row”<>; td<子圖案邊界 >td<Yes >td<分開正負子圖案 >tr style=“vertical-align: top”<>th scope=“row”<>%td<前綴或後綴 >td<是的 >td<乘以 100 並顯示百分比 >tr style=“vertical-align:top”<>th scope=“row”<>\u2030td<前綴或後綴 >td<>是的 td<乘以 1000 並顯示為千值 >tr style=“vertical-align: top”th<> scope=“row”<> (¤) \u00A4td<前綴或後綴 >td<無 ><貨幣符號,改為貨幣符號。> 若加倍,則以國際貨幣符號取代。 若模式中存在,則使用貨幣小數/分組分隔符代替小數/分組分隔符。
<TR style=“vertical-align:top”>th scope=“row”td<>'< 前綴或後綴 >td<無 >td<用於引用前綴或後綴中的特殊字元,例如格式 > 123 到 "'#'#"。"#123" 若要建立單一引號,請連續使用兩段: "# o''clock"。
</tbody></table></blockquote>
<h3>科學記號<法/h3>
科學記號中的數字以尾數與十的冪次方的乘積表示,例如,1234 可表示為 1.234 x 10^3。 尾數通常位於1.0 &le範圍內;x < 10.0,但其實不一定。
DecimalFormat只能透過 pattern</em> 指示格式化與解析科學記號 <EM>;目前尚無工廠方法能建立科學記號格式。 在一個模式中,緊接一個或多個數字字元的指數字元表示科學符號。 範例: "0.###E0" 將數字 1234 格式化為 "1.234E3"。
<ul><li>指數字元後的數字字元數即為最小指數數字數。 沒有最大值。 負指數則以局部減號 <、em>not</em> 作為前綴及圖案後綴來格式化。 這允許像 "0.###E0 m/s"。
<li>整數的最小與最大數會一起解釋:
<ul><li>如果整數位數的最大數大於其最小數且大於1,則該指數必須是整數數最大數的倍數,且最小整數則解釋為1。 最常見的用途是產生 <em 工程符號>/em<,其中指數為三的倍數,例如 >"##0.#####E0"。 利用此模式,數字 12345 將格式化為 "12.345E3",123456格式化為 "123.456E3"。
<li>否則,最小整數位數是透過調整指數來達成。 範例:0.00123 格式化為 "00.###E0""12.3E-4"。
</ul>
<尾>數中有效位數的總和是 em<最小>整數/em< 與 >em<最大分數>/em< 位數的總和>,且不受最大整數位數影響。 例如,格式化為 "##0.##E0" 12345 的 是 "12.3E3"。 要顯示所有數字,請將有效數字設為零。 有效位數的數量不會影響解析。
<li>指數模式可能不包含分組分隔符。 </ul>
<h3>四捨五入</h3>
DecimalFormat 提供定義於格式 java.math.RoundingMode 化的四捨五入模式。 預設情況下,它使用 java.math.RoundingMode#HALF_EVEN RoundingMode.HALF_EVEN。
<h3>數字</h3>
格式化時, DecimalFormat 使用物件中定義 DecimalFormatSymbols 的本地零位開始的連續十個字元。 在解析時,這些數字以及所有由 定義的 Character#digit Character.digitUnicode 十進位數字都會被識別。
<h4>特殊價值</h4>
NaN 格式化為字串,通常只有一個字元 \uFFFD。 這串由物件決定 DecimalFormatSymbols 。 這是唯一不使用前綴和後綴的數值。
Infinity 格式為字串,通常只有一個字元 \u221E,並加上正負前綴與後綴。 無限弦由 DecimalFormatSymbols 物件決定。
負零("-0")解析 <ul><li>BigDecimal(0) 若isParseBigDecimal()為真;<li>Long(0) 若isParseBigDecimal()為假且isParseIntegerOnly()為真;<>Double(-0.0)li 若兩者isParseBigDecimal()isParseIntegerOnly()皆為假。
</ul>
<h3>「同步」同步/><h3>
十進位格式通常不同步。 建議為每個執行緒建立獨立格式實例。 若多個執行緒同時存取同一格式,必須在外部同步。
<h3>範例</h3>
<引用>
<strong>{@code
// Print out a number using the localized number, integer, currency,
// and percent format for each locale}</strong>{@code
Locale[] locales = NumberFormat.getAvailableLocales();
double myNumber = -1234.56;
NumberFormat form;
for (int j = 0; j < 4; ++j) {
System.out.println("FORMAT");
for (int i = 0; i < locales.length; ++i) {
if (locales[i].getCountry().length() == 0) {
continue; // Skip language-only locales
}
System.out.print(locales[i].getDisplayName());
switch (j) {
case 0:
form = NumberFormat.getInstance(locales[i]); break;
case 1:
form = NumberFormat.getIntegerInstance(locales[i]); break;
case 2:
form = NumberFormat.getCurrencyInstance(locales[i]); break;
default:
form = NumberFormat.getPercentInstance(locales[i]); break;
}
if (form instanceof DecimalFormat) {
System.out.print(": " + ((DecimalFormat) form).toPattern());
}
System.out.print(" -> " + form.format(myNumber));
try {
System.out.println(" -> " + form.parse(form.format(myNumber)));
} catch (ParseException e) {}
}
}
}
</區塊引用>
在 1.1 版本中加入。
Java 文件 java.text.DecimalFormat。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| DecimalFormat() |
使用預設模式和符號建立一個十 |
| DecimalFormat(IntPtr, JniHandleOwnership) |
建立 JNI 物件的 Managed 表示法時使用的建構函式;由運行時間呼叫。 |
| DecimalFormat(String, DecimalFormatSymbols) |
利用給定的圖案和符號建立一個十進位格式。 |
| DecimalFormat(String) |
利用給定模式及預設 |
欄位
| 名稱 | Description |
|---|---|
| FractionField |
場常數用於建構 FieldPosition 物件。 (繼承來源 NumberFormat) |
| IntegerField |
場常數用於建構 FieldPosition 物件。 (繼承來源 NumberFormat) |
屬性
| 名稱 | Description |
|---|---|
| Class |
回傳此 |
| Currency |
在格式化貨幣值時,取得此數字格式所使用的貨幣。 -或- 設定此數字格式在格式化貨幣值時所使用的貨幣。 (繼承來源 NumberFormat) |
| DecimalFormatSymbols |
回傳一份十進位格式符號的副本,程式設計師或使用者通常不會更改。 -或- 設定十進位符號,程式設計師或使用者通常不會更改。 |
| DecimalSeparatorAlwaysShown |
這讓你能了解帶整數的十進位分隔符的行為。 -或- 允許你用整數設定十進位分隔符的行為。 |
| GroupingSize |
還原分組尺寸。 -或者- 設定群組大小。 |
| GroupingUsed |
若使用此格式的分組,則會回傳真值。 -或- 設定此格式是否使用分組。 (繼承來源 NumberFormat) |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
|
| JniPeerMembers |
|
| MaximumFractionDigits |
回傳數字分數部分允許的最大位數。 -或- 設定數字分數部分中允許的最大位數。 (繼承來源 NumberFormat) |
| MaximumIntegerDigits |
回傳數字整數部分允許的最大位數。 -或- 設定數字整數部分允許的最大位數。 (繼承來源 NumberFormat) |
| MinimumFractionDigits |
回傳數字分數部分中允許的最小位數。 -或- 設定數字分數部分中允許的最小位數。 (繼承來源 NumberFormat) |
| MinimumIntegerDigits |
回傳數字整數部分允許的最小位數。 -或- 設定數字整數部分允許的最小數字數。 (繼承來源 NumberFormat) |
| Multiplier |
獲得乘數,用於百分比、千分及類似格式。 -或- 設定乘數,以百分比、每千等類似格式使用。 |
| NegativePrefix |
選擇負前綴。 -或者- 設定負前綴。 |
| NegativeSuffix |
加上負面後綴。 -或者- 設定負後綴。 |
| ParseBigDecimal |
回傳方法是否 |
| ParseIntegerOnly |
如果此格式僅解析數字為整數,則回傳為真。 -或- 設定數字是否應僅解析為整數。 (繼承來源 NumberFormat) |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| PositivePrefix |
取得正面前綴。 -或者- 設定正面前綴。 |
| PositiveSuffix |
拿正面後綴。 -或者- 設定正面後綴。 |
| RoundingMode |
在這個數字格式中被 |
| ThresholdClass |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
| ThresholdType |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
方法
| 名稱 | Description |
|---|---|
| ApplyLocalizedPattern(String) |
將給定的模式套用到這個格式物件上。 |
| ApplyPattern(String) |
將給定的模式套用到這個格式物件上。 |
| Clone() |
建立並回傳此物件的副本。 (繼承來源 _Format) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
|
| Dispose() |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| Dispose(Boolean) |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| DisposeUnlessReferenced() |
|
| Equals(Object) |
|
| Equals(Object) |
表示是否有其他物體「等同」於此物。 (繼承來源 Object) |
| Format(Double, StringBuffer, FieldPosition) |
格式化雙重字串以產生字串。 |
| Format(Double) |
格式的專業化。 (繼承來源 NumberFormat) |
| Format(Int64, StringBuffer, FieldPosition) |
格式化一個長字串。 |
| Format(Int64) |
格式的專業化。 (繼承來源 NumberFormat) |
| Format(Object, StringBuffer, FieldPosition) |
格式化一個數字,並將所得文字附加到給定的字串緩衝區。 |
| Format(Object) |
格式化物件以產生字串。 (繼承來源 _Format) |
| FormatToCharacterIterator(Object) |
格式化物件產生 |
| GetHashCode() |
回傳物件的雜湊碼值。 (繼承來源 Object) |
| JavaFinalize() |
已淘汰.
當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。 (繼承來源 Object) |
| Notify() |
喚醒一個正在該物件監視器上等待的執行緒。 (繼承來源 Object) |
| NotifyAll() |
喚醒所有等待該物件監視器的執行緒。 (繼承來源 Object) |
| Parse(String, ParsePosition) |
從字串中解析文字以產生 |
| Parse(String) |
從給定字串的開頭解析文字以產生一個數字。 (繼承來源 NumberFormat) |
| ParseObject(String, ParsePosition) |
從字串中解析文字以產生 |
| ParseObject(String) |
解析給定字串開頭的文字以產生物件。 (繼承來源 _Format) |
| SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
|
| ToArray<T>() |
從這個 Java 陣列包裝器建立一個受管理陣列。 (繼承來源 Object) |
| ToLocalizedPattern() |
合成一個代表此 Format 物件當前狀態的局部模式字串。 |
| ToPattern() |
合成一個模式字串,代表此格式物件的當前狀態。 |
| ToString() |
回傳物件的字串表示。 (繼承來源 Object) |
| UnregisterFromRuntime() |
將此 Java 節點從互通執行時中取消註冊。 (繼承來源 Object) |
| Wait() |
導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。 (繼承來源 Object) |
| Wait(Int64, Int32) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
| Wait(Int64) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
|
| IJavaPeerable.Finalized() |
|
| IJavaPeerable.JniObjectReferenceControlBlock |
|
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
|
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
|
| IJavaPeerable.SetPeerReference(JniObjectReference) |
|
| IJavaPeerable.UnregisterFromRuntime() |
|
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
|
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |