語言

DecimalFormat 類別

定義

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 &#92;uFFFE, &#92;uFFFF, and special characters
<i>Suffix:</i>
                    any Unicode characters except &#92;uFFFE, &#92;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”<>&#92;u2030td<前綴或後綴 >td<>是的 td<乘以 1000 並顯示為千值 >tr style=“vertical-align: top”th<> scope=“row”<> (&#164;) &#92;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 格式化為字串,通常只有一個字元 &#92;uFFFD。 這串由物件決定 DecimalFormatSymbols 。 這是唯一不使用前綴和後綴的數值。

Infinity 格式為字串,通常只有一個字元 &#92;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()

使用預設模式和符號建立一個十 java.util.Locale.Category#FORMAT FORMAT 進位格式。

DecimalFormat(IntPtr, JniHandleOwnership)

建立 JNI 物件的 Managed 表示法時使用的建構函式;由運行時間呼叫。

DecimalFormat(String, DecimalFormatSymbols)

利用給定的圖案和符號建立一個十進位格式。

DecimalFormat(String)

利用給定模式及預設 java.util.Locale.Category#FORMAT FORMAT 區域符號建立十進位格式。

欄位

名稱 Description
FractionField

場常數用於建構 FieldPosition 物件。

(繼承來源 NumberFormat)
IntegerField

場常數用於建構 FieldPosition 物件。

(繼承來源 NumberFormat)

屬性

名稱 Description
Class

回傳此 Object的執行時類別。

(繼承來源 Object)
Currency

在格式化貨幣值時,取得此數字格式所使用的貨幣。 -或- 設定此數字格式在格式化貨幣值時所使用的貨幣。

(繼承來源 NumberFormat)
DecimalFormatSymbols

回傳一份十進位格式符號的副本,程式設計師或使用者通常不會更改。 -或- 設定十進位符號,程式設計師或使用者通常不會更改。

DecimalSeparatorAlwaysShown

這讓你能了解帶整數的十進位分隔符的行為。 -或- 允許你用整數設定十進位分隔符的行為。

GroupingSize

還原分組尺寸。 -或者- 設定群組大小。

GroupingUsed

若使用此格式的分組,則會回傳真值。 -或- 設定此格式是否使用分組。

(繼承來源 NumberFormat)
Handle

底層 Android 實例的帳號。

(繼承來源 Object)
JniIdentityHashCode

取得由互通執行時指派給此 Java 對等端的身份雜湊碼。

(繼承來源 Object)
JniManagedPeerState

DecimalFormat 是其具體子類 NumberFormat ,負責格式化十進位數字。

(繼承來源 JavaObject)
JniPeerMembers

DecimalFormat 是其具體子類 NumberFormat ,負責格式化十進位數字。

MaximumFractionDigits

回傳數字分數部分允許的最大位數。 -或- 設定數字分數部分中允許的最大位數。

(繼承來源 NumberFormat)
MaximumIntegerDigits

回傳數字整數部分允許的最大位數。 -或- 設定數字整數部分允許的最大位數。

(繼承來源 NumberFormat)
MinimumFractionDigits

回傳數字分數部分中允許的最小位數。 -或- 設定數字分數部分中允許的最小位數。

(繼承來源 NumberFormat)
MinimumIntegerDigits

回傳數字整數部分允許的最小位數。 -或- 設定數字整數部分允許的最小數字數。

(繼承來源 NumberFormat)
Multiplier

獲得乘數,用於百分比、千分及類似格式。 -或- 設定乘數,以百分比、每千等類似格式使用。

NegativePrefix

選擇負前綴。 -或者- 設定負前綴。

NegativeSuffix

加上負面後綴。 -或者- 設定負後綴。

ParseBigDecimal

回傳方法是否 #parse(java.lang.String, java.text.ParsePosition) 返回 BigDecimal。 -或- 設定方法是否 #parse(java.lang.String, java.text.ParsePosition) 回傳 BigDecimal。

ParseIntegerOnly

如果此格式僅解析數字為整數,則回傳為真。 -或- 設定數字是否應僅解析為整數。

(繼承來源 NumberFormat)
PeerReference

取得這個 Java 節點的 JNI 物件參考。

(繼承來源 Object)
PositivePrefix

取得正面前綴。 -或者- 設定正面前綴。

PositiveSuffix

拿正面後綴。 -或者- 設定正面後綴。

RoundingMode

在這個數字格式中被 java.math.RoundingMode 使用。 -或- 設定此數字格式中的 。java.math.RoundingMode

(繼承來源 NumberFormat)
ThresholdClass

此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。

ThresholdType

此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。

方法

名稱 Description
ApplyLocalizedPattern(String)

將給定的模式套用到這個格式物件上。

ApplyPattern(String)

將給定的模式套用到這個格式物件上。

Clone()

建立並回傳此物件的副本。

(繼承來源 _Format)
Construct(JniObjectReference, JniObjectReferenceOptions)

DecimalFormat 是其具體子類 NumberFormat ,負責格式化十進位數字。

(繼承來源 JavaObject)
Dispose()

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
Dispose(Boolean)

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
DisposeUnlessReferenced()

DecimalFormat 是其具體子類 NumberFormat ,負責格式化十進位數字。

(繼承來源 JavaObject)
Equals(Object)

DecimalFormat 是其具體子類 NumberFormat ,負責格式化十進位數字。

(繼承來源 JavaObject)
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)

格式化物件產生 AttributedCharacterIterator。

(繼承來源 _Format)
GetHashCode()

回傳物件的雜湊碼值。

(繼承來源 Object)
JavaFinalize()
已淘汰.

當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。

(繼承來源 Object)
Notify()

喚醒一個正在該物件監視器上等待的執行緒。

(繼承來源 Object)
NotifyAll()

喚醒所有等待該物件監視器的執行緒。

(繼承來源 Object)
Parse(String, ParsePosition)

從字串中解析文字以產生 Number。

Parse(String)

從給定字串的開頭解析文字以產生一個數字。

(繼承來源 NumberFormat)
ParseObject(String, ParsePosition)

從字串中解析文字以產生 Number。

(繼承來源 NumberFormat)
ParseObject(String)

解析給定字串開頭的文字以產生物件。

(繼承來源 _Format)
SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

DecimalFormat 是其具體子類 NumberFormat ,負責格式化十進位數字。

(繼承來源 JavaObject)
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()

DecimalFormat 是其具體子類 NumberFormat ,負責格式化十進位數字。

(繼承來源 JavaObject)
IJavaPeerable.Finalized()

DecimalFormat 是其具體子類 NumberFormat ,負責格式化十進位數字。

(繼承來源 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

DecimalFormat 是其具體子類 NumberFormat ,負責格式化十進位數字。

(繼承來源 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

DecimalFormat 是其具體子類 NumberFormat ,負責格式化十進位數字。

(繼承來源 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

DecimalFormat 是其具體子類 NumberFormat ,負責格式化十進位數字。

(繼承來源 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

DecimalFormat 是其具體子類 NumberFormat ,負責格式化十進位數字。

(繼承來源 JavaObject)
IJavaPeerable.UnregisterFromRuntime()

DecimalFormat 是其具體子類 NumberFormat ,負責格式化十進位數字。

(繼承來源 _Format)

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

DecimalFormat 是其具體子類 NumberFormat ,負責格式化十進位數字。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於