|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object java.text.Format java.text.NumberFormat
public abstract class NumberFormat
NumberFormat
是所有数字格式的抽象基类。此类提供了格式化和分析数字的接口。NumberFormat
还提供了一些方法,用来确定哪些语言环境具有数字格式,以及它们的名称是什么。
NumberFormat
有助于格式化和分析任何语言环境的数字。代码能够完全独立于语言环境对于小数点、千位分隔符或特殊的十进制数字的约定,甚至与数字格式是否为十进制也是无关的。
为了格式化当前语言环境的数字,要使用一个工厂类方法:
如果格式化多个数字,那么获得该格式并多次使用它是更为高效的做法,这样系统就不必多次获取关于语言环境语言和国家/地区约定的信息了。myString = NumberFormat.getInstance().format(myNumber);
要格式化不同语言环境的日期,可在NumberFormat nf = NumberFormat.getInstance(); for (int i = 0; i < a.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)" for -12.
数字格式化通常是不同步的。建议为每个线程创建独立的格式实例。如果多个线程同时访问一个格式,则它必须是外部同步的。
DecimalFormat
,
ChoiceFormat
,
序列化表格嵌套类摘要 | |
---|---|
static class |
NumberFormat.Field
在从 NumberFormat.formatToCharacterIterator 返回的 AttributedCharacterIterator 中定义用作属性键的常量,并将其作为 FieldPosition 中的字段标识符。 |
字段摘要 | |
---|---|
static int |
FRACTION_FIELD
用于构造 FieldPosition 对象的字段常量。 |
static int |
INTEGER_FIELD
用于构造 FieldPosition 对象的字段常量。 |
构造方法摘要 | |
---|---|
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)
返回指定语言环境的百分比格式。 |
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)
设置数是否应该仅作为整数来分析。 |
从类 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
,
常量字段值构造方法详细信息 |
---|
public NumberFormat()
方法详细信息 |
---|
public StringBuffer format(Object number, StringBuffer toAppendTo, FieldPosition pos)
Number
的任何子类。
对于能够被转换为 long
类型而不丢失信息的所有整型值,此实现使用 Number.longValue()
来提取其数值,包括 bit length
小于 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
为 nullFieldPosition
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)
Format.format(java.lang.Object)
public final String format(long number)
Format.format(java.lang.Object)
public abstract StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos)
Format.format(java.lang.Object)
public abstract StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos)
Format.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()
ROUND_HALF_EVEN
),并只分析输入字符串的整数部分(参见 isParseIntegerOnly
)。
public static NumberFormat getIntegerInstance(Locale inLocale)
ROUND_HALF_EVEN
),并只分析输入字符串的整数部分(参见 isParseIntegerOnly
)。
inLocale
- 数字格式所需的语言环境
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
方法可以为其返回本地化的实例。返回的数组至少必须包含一个 Locale
实例,它等同于 Locale.US
。
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
为 null
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。