|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.text.Format java.text.NumberFormat
public abstract class NumberFormat
NumberFormat
是所有數值格式的抽象基礎類別。此類別提供格式化和解析數值的介面。NumberFormat
還提供了一些方法來確定哪些語言環境具有數值格式,以及它們的名稱是什麼。
NumberFormat
可用於格式化和解析任何語言環境的數值。使程式碼能夠完全獨立於小數點、千位分隔符甚至所用特定小數位數的語言環境約定,並與數值格式是否為偶小數無關。
若要格式化當前 Locale 的數值,可使用其中一個處理器類別方法:
如果格式化多個數值,那麼獲取該格式並多次使用它是更為高效的做法,這樣系統就不必多次獲取關於語言環境語言和國家/地區約定的資訊了。myString = NumberFormat.getInstance().format(myNumber);
若要格式化不同 Locale 的日期,可在對NumberFormat nf = NumberFormat.getInstance(); for (int i = 0; i < myNumber.length; ++i) { output.println(nf.format(myNumber[i]) + "; "); }
getInstance
的調用中指定它。
還可以使用NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
NumberFormat
來解析數值:
使用myNumber = nf.parse(myString);
getInstance
或 getNumberInstance
來獲取常規數值格式。使用 getIntegerInstance
來獲取整數數值格式。使用 getCurrencyInstance
來獲取貨幣數值格式。使用 getPercentInstance
來獲取顯示百分比的格式。使用此格式,小數 0.53 將顯示為 53%。
使用 setMinimumFractionDigits
之類別的方法還可以控制數值的顯示。如果想對格式化和解析進行更多的控制(或者給予使用者更多的控制),可以嘗試將從處理器方法獲取的 NumberFormat
強制轉換為 DecimalFormat
。這適用於大多數語言環境;只是要記住將其放入一個 try
程式碼塊中,以防遇到特殊情況。
NumberFormat 和 DecimalFormat 的作用在於,有一些方法控制格式化,還有一些方法控制解析。以下是對每種控制方法的詳細描述:
setParseIntegerOnly : 只影響解析,例如,如果為 true,則 "3456.78" -> 3456(並保留索引 6 後面的那個解析位置),如果為 false,則 "3456.78" -> 3456.78(並保留索引 8 後面的那個解析位置)。此方法與格式化無關。如果希望在小數點後面沒有數值的情況下不顯示小數點,則使用 setDecimalSeparatorAlwaysShown。
setDecimalSeparatorAlwaysShown :只影響格式化,且只影響小數點後沒有數值的情況,例如網要 "#,##0.##",如果為 true,則 3456.00 -> "3,456.",如果為 false,則 3456.00 -> "3456"。此方法與解析無關。如果希望解析在小數點處停止,則使用 setParseIntegerOnly。
還可以使用帶有 ParsePosition
和 FieldPosition
的 parse
和 format
方法的形式,它們允許:
FieldPosition
,令 field
= INTEGER_FIELD
。在輸出時,getEndIndex
將被設置為最後一個整數字元和小數字元之間的偏移量。在字元串前面加入 (desiredSpaceCount - getEndIndex) 個空格。
getEndIndex
的字元串寬度。然後在繪製文本之前將畫筆移動 (desiredPixelWidth - widthToAlignmentPoint) 個像素。對於沒有小數但可能在末尾有其他字元的字元串,這種方法也是有效的,例如,帶有圓括號的負數:"(12)" 用於 -12。
數值格式化通常是不同步的。建議為每個執行緒創建獨立的格式實例。如果多個執行緒同時存取一個格式,則它必須是外部同步的。
DecimalFormat
,
ChoiceFormat
,
序列化表格巢狀類別摘要 | |
---|---|
static class |
NumberFormat.Field
定義將用作從 NumberFormat.formatToCharacterIterator 返回的 AttributedCharacterIterator 中屬性鍵以及 FieldPosition 中欄位標識符的常數。 |
欄位摘要 | |
---|---|
static int |
FRACTION_FIELD
用於建構 FieldPosition 物件的欄位常數。 |
static int |
INTEGER_FIELD
用於建構 FieldPosition 物件的欄位常數。 |
建構子摘要 | |
---|---|
protected |
NumberFormat()
唯一的建構子。 |
方法摘要 | |
---|---|
Object |
clone()
覆寫 Cloneable |
boolean |
equals(Object obj)
覆寫 equals |
String |
format(double number)
格式規範。 |
abstract StringBuffer |
format(double number,
StringBuffer toAppendTo,
FieldPosition pos)
格式規範。 |
String |
format(long number)
格式規範。 |
abstract StringBuffer |
format(long number,
StringBuffer toAppendTo,
FieldPosition pos)
格式規範。 |
StringBuffer |
format(Object number,
StringBuffer toAppendTo,
FieldPosition pos)
格式化一個數並將所得文本添加到給定字元串緩衝區。 |
static Locale[] |
getAvailableLocales()
返回一個陣列,它包含所有此類別的 get*Instance 方法可以為其返回本地化實例的語言環境。 |
Currency |
getCurrency()
獲取格式化貨幣值時此數值格式使用的貨幣。 |
static NumberFormat |
getCurrencyInstance()
返回當前預設語言環境的貨幣格式。 |
static NumberFormat |
getCurrencyInstance(Locale inLocale)
返回指定語言環境的貨幣格式。 |
static NumberFormat |
getInstance()
返回當前預設語言環境的通用數值格式。 |
static NumberFormat |
getInstance(Locale inLocale)
返回指定語言環境的通用數值格式。 |
static NumberFormat |
getIntegerInstance()
返回當前預設語言環境的整數格式。 |
static NumberFormat |
getIntegerInstance(Locale inLocale)
返回指定語言環境的整數格式。 |
int |
getMaximumFractionDigits()
返回數的小數部分所允許的最大位數。 |
int |
getMaximumIntegerDigits()
返回數的整數部分所允許的最大位數。 |
int |
getMinimumFractionDigits()
返回數的小數部分所允許的最小位數。 |
int |
getMinimumIntegerDigits()
返回數的整數部分所允許的最小位數。 |
static NumberFormat |
getNumberInstance()
返回當前預設語言環境的通用數值格式。 |
static NumberFormat |
getNumberInstance(Locale inLocale)
返回指定語言環境的通用數值格式。 |
static NumberFormat |
getPercentInstance()
返回當前預設語言環境的百分比格式。 |
static NumberFormat |
getPercentInstance(Locale inLocale)
返回指定語言環境的百分比格式。 |
RoundingMode |
getRoundingMode()
獲取在此 NumberFormat 中使用的 RoundingMode 。 |
int |
hashCode()
覆寫 hashCode |
boolean |
isGroupingUsed()
如果此格式中使用了分組,則返回 true。 |
boolean |
isParseIntegerOnly()
如果此格式只將數作為整數解析,則返回 true。 |
Number |
parse(String source)
解析給定字元串開頭的文本,產生一個數值。 |
abstract Number |
parse(String source,
ParsePosition parsePosition)
如果可能則返回 Long (例如,在 [Long.MIN_VALUE, Long.MAX_VALUE] 範圍內且沒有小數),否則返回 Double。 |
Object |
parseObject(String source,
ParsePosition pos)
解析字元串中的文本,以產生一個 Number 。 |
void |
setCurrency(Currency currency)
設置格式化貨幣值時此數值格式使用的貨幣。 |
void |
setGroupingUsed(boolean newValue)
設置此格式中是否使用分組。 |
void |
setMaximumFractionDigits(int newValue)
設置數的小數部分所允許的最大位數。 |
void |
setMaximumIntegerDigits(int newValue)
設置數的整數部分所允許的最大位數。 |
void |
setMinimumFractionDigits(int newValue)
設置數的小數部分所允許的最小位數。 |
void |
setMinimumIntegerDigits(int newValue)
設置數的整數部分所允許的最小位數。 |
void |
setParseIntegerOnly(boolean value)
設置數是否應該僅作為整數進行解析。 |
void |
setRoundingMode(RoundingMode roundingMode)
設置在此 NumberFormat 中使用的 RoundingMode 。 |
從類別 java.text.Format 繼承的方法 |
---|
format, formatToCharacterIterator, parseObject |
從類別 java.lang.Object 繼承的方法 |
---|
finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
欄位詳細資訊 |
---|
public static final int INTEGER_FIELD
FieldPosition
,
常數欄位值public static final int FRACTION_FIELD
FieldPosition
,
常數欄位值建構子詳細資訊 |
---|
protected NumberFormat()
方法詳細資訊 |
---|
public StringBuffer format(Object number, StringBuffer toAppendTo, FieldPosition pos)
Number
的任何子類別。
對於能夠被轉換為 long
型別而不丟失資訊的所有整型值,此實作使用 Number.longValue()
提取其數值,包括位長
小於 64 的 BigInteger
值;使用 Number.doubleValue()
提取所有其他型別的值。然後它調用 format(long,java.lang.StringBuffer,java.text.FieldPosition)
或 format(double,java.lang.StringBuffer,java.text.FieldPosition)
。這可能導致丟失數值資訊以及 BigInteger
和 BigDecimal
值的精度。
Format
中的 format
number
- 要格式化的數toAppendTo
- 要添加格式化文本的 StringBuffer
pos
- 輸入時:如果需要,是一個對齊欄位。輸出時:是對齊欄位的偏移量。
toAppendTo
傳入的值
IllegalArgumentException
- 如果 number
為 null 或不是 Number
的實例。
NullPointerException
- 如果 toAppendTo
或 pos
為 null
ArithmeticException
- 如果需要進行捨入但捨入網要設置為 RoundingMode.UNNECESSARYFieldPosition
public final Object parseObject(String source, ParsePosition pos)
Number
。
此方法試圖解析從 pos
給定的索引處開始的文本。如果解析成功,則將 pos
的索引更新為所解析的最後一字元後的索引(不一定對直到字元串結尾的所有字元進行解析),並返回解析後的數。更新後的 pos
可以用來指示下次調用此方法的起始點。如果發生錯誤,則 pos
的索引不變,pos
的錯誤索引被設置為發生錯誤的字元的索引,並返回 null。
有關數值解析的更多資訊,請參閱 parse(String, ParsePosition)
方法。
Format
中的 parseObject
source
- 一部分將要被解析的 String
。pos
- 具有以上所述的索引和錯誤索引資訊的 ParsePosition
物件。
Number
。如果發生錯誤,則返回 null。
NullPointerException
- 如果 pos
為 null。public final String format(double number)
ArithmeticException
- 如果需要進行捨入但捨入網要設置為 RoundingMode.UNNECESSARYFormat.format(java.lang.Object)
public final String format(long number)
ArithmeticException
- 如果需要進行捨入但捨入網要設置為 RoundingMode.UNNECESSARYFormat.format(java.lang.Object)
public abstract StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos)
ArithmeticException
- 如果需要進行捨入但捨入網要設置為 RoundingMode.UNNECESSARYFormat.format(java.lang.Object)
public abstract StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos)
ArithmeticException
- 如果需要進行捨入但捨入網要設置為 RoundingMode.UNNECESSARYFormat.format(java.lang.Object)
public abstract Number parse(String source, ParsePosition parsePosition)
isParseIntegerOnly()
,
Format.parseObject(java.lang.String, java.text.ParsePosition)
public Number parse(String source) throws ParseException
有關數值解析的更多資訊,請參閱 parse(String, ParsePosition)
方法。
source
- 開頭應被解析的 String
。
Number
。
ParseException
- 如果無法解析指定字元串的開頭。public boolean isParseIntegerOnly()
public void setParseIntegerOnly(boolean value)
isParseIntegerOnly()
public static final NumberFormat getInstance()
getNumberInstance()
相同。
public static NumberFormat getInstance(Locale inLocale)
getNumberInstance(inLocale)
相同。
public static final NumberFormat getNumberInstance()
public static NumberFormat getNumberInstance(Locale inLocale)
public static final NumberFormat getIntegerInstance()
RoundingMode.HALF_EVEN
),並只解析輸入字元串的整數部分(參見 isParseIntegerOnly
)。
getRoundingMode()
public static NumberFormat getIntegerInstance(Locale inLocale)
RoundingMode.HALF_EVEN
),並只解析輸入字元串的整數部分(參見 isParseIntegerOnly
)。
getRoundingMode()
public static final NumberFormat getCurrencyInstance()
public static NumberFormat getCurrencyInstance(Locale inLocale)
public static final NumberFormat getPercentInstance()
public static NumberFormat getPercentInstance(Locale inLocale)
public static Locale[] getAvailableLocales()
get*Instance
方法可以為其返回本地化實例的語言環境。返回陣列表示 Java 運行時和安裝的 NumberFormatProvider
實作所支持的語言環境的並集。它必須至少包含一個等同於 Locale.US
的 Locale
實例。
NumberFormat
實例的語言環境。public int hashCode()
Object
中的 hashCode
Object.equals(java.lang.Object)
,
Hashtable
public boolean equals(Object obj)
Object
中的 equals
obj
- 要與之比較的參考物件。
true
;否則返回 false
。Object.hashCode()
,
Hashtable
public Object clone()
Format
中的 clone
Cloneable
public boolean isGroupingUsed()
setGroupingUsed(boolean)
public void setGroupingUsed(boolean newValue)
isGroupingUsed()
public int getMaximumIntegerDigits()
setMaximumIntegerDigits(int)
public void setMaximumIntegerDigits(int newValue)
newValue
- 要顯示的最大整數位數;如果小於 0,則使用 0。具體子類別可以為此值強加一個上限,以適合於被格式化的數值型別。getMaximumIntegerDigits()
public int getMinimumIntegerDigits()
setMinimumIntegerDigits(int)
public void setMinimumIntegerDigits(int newValue)
newValue
- 要顯示的整數的最小位數;如果小於 0,則使用 0。具體子類別可以為此值強加一個上限,以適合於被格式化的數值型別。getMinimumIntegerDigits()
public int getMaximumFractionDigits()
setMaximumFractionDigits(int)
public void setMaximumFractionDigits(int newValue)
newValue
- 要顯示的小數的最大位數;如果小於 0,則使用 0。具體子類別可以為此值強加一個上限,以適合於被格式化的數值型別。getMaximumFractionDigits()
public int getMinimumFractionDigits()
setMinimumFractionDigits(int)
public void setMinimumFractionDigits(int newValue)
newValue
- 要顯示的小數的最小位數;如果小於 0,則使用 0。具體子類別可以為此值強加一個上限,以適合於被格式化的數值型別。getMinimumFractionDigits()
public Currency getCurrency()
setCurrency
設置任何貨幣,則返回值為 null。
預設實作拋出 UnsupportedOperationException
。
null
UnsupportedOperationException
- 如果數值格式類別不實作貨幣格式化public void setCurrency(Currency currency)
預設實作拋出 UnsupportedOperationException
。
currency
- 此數值格式要使用的新貨幣
UnsupportedOperationException
- 如果數值格式類別不實作貨幣格式化
NullPointerException
- 如果 currency
為 nullpublic RoundingMode getRoundingMode()
RoundingMode
。在 NumberFormat 中此方法的預設實作始終拋出 UnsupportedOperationException
。處理不同捨入網要的子類別應該覆寫此方法。
RoundingMode
。
UnsupportedOperationException
- 預設實作始終拋出此異常setRoundingMode(RoundingMode)
public void setRoundingMode(RoundingMode roundingMode)
RoundingMode
。在 NumberFormat 中此方法的預設實作始終拋出 UnsupportedOperationException
。處理不同捨入網要的子類別應該覆寫此方法。
roundingMode
- 要使用的 RoundingMode
UnsupportedOperationException
- 預設實作始終拋出此異常
NullPointerException
- 如果 roundingMode
為 nullgetRoundingMode()
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。