|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.text
类 NumberFormat
java.lang.Object java.text.Format java.text.NumberFormat
- 所有已实现的接口:
- Serializable, Cloneable
- 直接已知子类:
- ChoiceFormat, DecimalFormat
-
public abstract class NumberFormat
- extends Format
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 |
字段详细信息 |
---|
INTEGER_FIELD
public static final int INTEGER_FIELD
-
用于构造 FieldPosition 对象的字段常量。表示必须返回格式化的数字的整数部分位置。
- 另请参见:
-
FieldPosition
, 常量字段值
FRACTION_FIELD
public static final int FRACTION_FIELD
-
用于构造 FieldPosition 对象的字段常量。表示必须返回格式化的数字的小数部分位置。
- 另请参见:
-
FieldPosition
, 常量字段值
构造方法详细信息 |
---|
NumberFormat
public NumberFormat()
方法详细信息 |
---|
format
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
值的精度的丢失。 -
- 参数:
-
number
- 要格式化的数 -
toAppendTo
- 字符串要被追加到的StringBuffer
-
pos
- 在输入时:如果需要,是一个对齐字段。在输出时:为对齐字段的偏移量。 - 返回:
-
作为
toAppendTo
被传递进来的值 - 抛出:
-
IllegalArgumentException
- 如果number
为 null 或不是Number
的实例。 -
NullPointerException
- 如果toAppendTo
或pos
为 null - 另请参见:
-
FieldPosition
parseObject
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。
format
public final String format(double number)
- 格式规范。
format
public final String format(long number)
- 格式规范。
format
public abstract StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos)
- 格式规范。
format
public abstract StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos)
- 格式规范。