public abstract class NumberFormat
extends Format
java.lang.Object | ||
↳ | java.text.Format | |
↳ | java.text.NumberFormat |
Known Direct Subclasses |
NumberFormat
是所有数字格式的抽象基类。 这个类提供了格式和解析数字的接口。 NumberFormat
还提供了用于确定哪些区域设置具有数字格式以及它们的名称是什么的方法。
NumberFormat
可帮助您为任何区域设置格式和解析数字。 您的代码可以完全独立于小数点,千位分隔符甚至所用的特定小数位的区域设置约定,或者数字格式是否为十进制。
要为当前语言环境设置一个数字格式,请使用其中一个工厂类方法:
If you are formatting multiple numbers, it is more efficient to get the format and use it multiple times so that the system doesn't have to fetch the information about the local language and country conventions multiple times.myString = NumberFormat.getInstance().format(myNumber);
To format a number for a different Locale, specify it in the call toNumberFormat nf = NumberFormat.getInstance(); for (int i = 0; i < myNumber.length; ++i) { output.println(nf.format(myNumber[i]) + "; "); }
getInstance
.
You can also use aNumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
NumberFormat
to parse numbers:
UsemyNumber = nf.parse(myString);
getInstance
or
getNumberInstance
to get the normal number format. Use
getIntegerInstance
to get an integer number format. Use
getCurrencyInstance
to get the currency number format. And use
getPercentInstance
to get a format for displaying percentages. With this format, a fraction like 0.53 is displayed as 53%.
您还可以使用诸如setMinimumFractionDigits
等方法来控制数字的显示。 如果你想在格式或对其进行解析更大的控制权,或者希望给用户更多的控制,你可以尝试铸造NumberFormat
你从工厂方法到获得DecimalFormat
。 这将适用于绝大多数地区; 只要记得把它放在try
区块中,以防遇到异常情况。
NumberFormat和DecimalFormat的设计使得一些控件可用于格式化,其他控件可用于解析。 以下是每种这些控制方法的详细描述,
setParseIntegerOnly:仅影响分析,例如,如果为true,“3456.78” - > 3456(并且离开索引6之后的分析位置)如果为假,“3456.78” - > 3456.78(并且离开索引8之后的分析位置)这是独立的格式化。 如果您不希望小数点后面显示小数点,请使用setDecimalSeparatorAlwaysShown。
setDecimalSeparatorAlwaysShown:只影响格式化,并且只在小数点后面没有数字的地方使用,例如像“#,## 0。##”这样的模式,例如,如果为true,3456.00 - >“3,456”。 如果为false,3456.00 - >“3456”这与解析无关。 如果要解析为在小数点停止,请使用setParseIntegerOnly。
您还可以使用 parse
和 format
方法的形式与 ParsePosition
和 FieldPosition
一起使用,以便:
FieldPosition
in your format call, with field
= INTEGER_FIELD
. On output, getEndIndex
will be set to the offset between the last character of the integer and the decimal. Add (desiredSpaceCount - getEndIndex) spaces at the front of the string. getEndIndex
. Then move the pen by (desiredPixelWidth - widthToAlignmentPoint) before drawing the text. It also works where there is no decimal, but possibly additional characters at the end, e.g., with parentheses in negative numbers: "(12)" for -12. 数字格式通常不同步。 建议为每个线程创建单独的格式实例。 如果多个线程同时访问一个格式,它必须在外部同步。
也可以看看:
Nested classes |
|
---|---|
class |
NumberFormat.Field 定义了用于作为属性键常数 |
Constants |
|
---|---|
int |
FRACTION_FIELD 用于构造FieldPosition对象的字段常量。 |
int |
INTEGER_FIELD 用于构造FieldPosition对象的字段常量。 |
Protected constructors |
|
---|---|
NumberFormat() 唯一的构造函数。 |
Public methods |
|
---|---|
Object |
clone() 覆盖可复制 |
boolean |
equals(Object obj) 覆盖等于 |
StringBuffer |
format(Object number, StringBuffer toAppendTo, FieldPosition pos) 格式化数字并将结果文本附加到给定的字符串缓冲区。 |
final String |
format(double number) 格式专业化。 |
abstract StringBuffer |
format(double number, StringBuffer toAppendTo, FieldPosition pos) 格式专业化。 |
final String |
format(long number) 格式专业化。 |
abstract StringBuffer |
format(long number, StringBuffer toAppendTo, FieldPosition pos) 格式专业化。 |
static Locale[] |
getAvailableLocales() 返回 |
Currency |
getCurrency() 格式化货币值时,获取此数字格式使用的货币。 |
static NumberFormat |
getCurrencyInstance(Locale inLocale) 返回指定语言环境的货币格式。 |
static final NumberFormat |
getCurrencyInstance() 返回当前默认语言环境的货币格式。 |
static final NumberFormat |
getInstance() 返回当前默认语言环境的通用数字格式。 |
static NumberFormat |
getInstance(Locale inLocale) 返回指定语言环境的通用数字格式。 |
static final NumberFormat |
getIntegerInstance() 返回当前默认语言环境的整数数字格式。 |
static NumberFormat |
getIntegerInstance(Locale inLocale) 返回指定语言环境的整数数字格式。 |
int |
getMaximumFractionDigits() 返回数字的小数部分中允许的最大位数。 |
int |
getMaximumIntegerDigits() 返回数字整数部分允许的最大位数。 |
int |
getMinimumFractionDigits() 返回数字的小数部分中允许的最小位数。 |
int |
getMinimumIntegerDigits() 返回数字整数部分允许的最小位数。 |
static final NumberFormat |
getNumberInstance() 返回当前默认语言环境的通用数字格式。 |
static NumberFormat |
getNumberInstance(Locale inLocale) 返回指定语言环境的通用数字格式。 |
static NumberFormat |
getPercentInstance(Locale inLocale) 返回指定语言环境的百分比格式。 |
static final NumberFormat |
getPercentInstance() 返回当前默认语言环境的百分比格式。 |
RoundingMode |
getRoundingMode() 获取此NumberFormat中使用的 |
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。 |
final Object |
parseObject(String source, ParsePosition pos) 解析字符串中的文本以生成 |
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中使用的 |
Inherited methods |
|
---|---|
From class java.text.Format
|
|
From class java.lang.Object
|
int FRACTION_FIELD
用于构造FieldPosition对象的字段常量。 表示应该返回格式化数字的小数部分的位置。
也可以看看:
常数值:1(0x00000001)
int INTEGER_FIELD
用于构造FieldPosition对象的字段常量。 表示应该返回格式化数字的整数部分的位置。
也可以看看:
常量值:0(0x00000000)
boolean equals (Object obj)
覆盖等于
Parameters | |
---|---|
obj |
Object : the reference object with which to compare. |
Returns | |
---|---|
boolean |
true if this object is the same as the obj argument; false otherwise. |
StringBuffer format (Object number, StringBuffer toAppendTo, FieldPosition pos)
格式化数字并将结果文本附加到给定的字符串缓冲区。 该号码可以是任何小类Number
。
此实现中提取使用数字的值longValue()
为可以转换到所有积分类型值long
而不会丢失信息,包括BigInteger
具有值bit length
的小于64,以及doubleValue()
对于所有其他类型。 然后它调用format(long, java.lang.StringBuffer, java.text.FieldPosition)
或format(double, java.lang.StringBuffer, java.text.FieldPosition)
。 这可能会导致BigInteger
和BigDecimal
值的量级信息和精度损失。
Parameters | |
---|---|
number |
Object : the number to format |
toAppendTo |
StringBuffer : the StringBuffer to which the formatted text is to be appended |
pos |
FieldPosition : On input: an alignment field, if desired. On output: the offsets of the alignment field. |
Returns | |
---|---|
StringBuffer |
the value passed in as toAppendTo |
Throws | |
---|---|
IllegalArgumentException |
if number is null or not an instance of Number . |
NullPointerException |
if toAppendTo or pos is null |
ArithmeticException |
if rounding is needed with rounding mode being set to RoundingMode.UNNECESSARY |
也可以看看:
String format (double number)
格式专业化。
Parameters | |
---|---|
number |
double
|
Returns | |
---|---|
String |
Throws | |
---|---|
ArithmeticException |
if rounding is needed with rounding mode being set to RoundingMode.UNNECESSARY |
也可以看看:
StringBuffer format (double number, StringBuffer toAppendTo, FieldPosition pos)
格式专业化。
Parameters | |
---|---|
number |
double
|
toAppendTo |
StringBuffer
|
pos |
FieldPosition
|
Returns | |
---|---|
StringBuffer |
Throws | |
---|---|
ArithmeticException |
if rounding is needed with rounding mode being set to RoundingMode.UNNECESSARY |
也可以看看:
String format (long number)
格式专业化。
Parameters | |
---|---|
number |
long
|
Returns | |
---|---|
String |
Throws | |
---|---|
ArithmeticException |
if rounding is needed with rounding mode being set to RoundingMode.UNNECESSARY |
也可以看看:
StringBuffer format (long number, StringBuffer toAppendTo, FieldPosition pos)
格式专业化。
Parameters | |
---|---|
number |
long
|
toAppendTo |
StringBuffer
|
pos |
FieldPosition
|
Returns | |
---|---|
StringBuffer |
Throws | |
---|---|
ArithmeticException |
if rounding is needed with rounding mode being set to RoundingMode.UNNECESSARY |
也可以看看:
Locale[] getAvailableLocales ()
返回get*Instance
方法可返回本地化实例的所有语言环境的数组。 返回的数组表示Java运行时支持的语言环境,并通过安装在工会NumberFormatProvider
实现。 它必须包含至少一个Locale
情况下等于Locale.US
。
Returns | |
---|---|
Locale[] |
An array of locales for which localized NumberFormat instances are available. |
Currency getCurrency ()
格式化货币值时,获取此数字格式使用的货币。 初始值是以与区域相关的方式派生的。 如果无法确定有效货币并且未使用setCurrency
设置货币,则返回的值可能为空。
默认实现抛出 UnsupportedOperationException
。
Returns | |
---|---|
Currency |
the currency used by this number format, or null |
Throws | |
---|---|
UnsupportedOperationException |
if the number format class doesn't implement currency formatting |
NumberFormat getCurrencyInstance (Locale inLocale)
返回指定语言环境的货币格式。
Parameters | |
---|---|
inLocale |
Locale
|
Returns | |
---|---|
NumberFormat |
NumberFormat getCurrencyInstance ()
返回当前默认语言环境的货币格式。
Returns | |
---|---|
NumberFormat |
NumberFormat getInstance ()
返回当前默认语言环境的通用数字格式。 这与致电getNumberInstance()
相同。
Returns | |
---|---|
NumberFormat |
NumberFormat getInstance (Locale inLocale)
返回指定语言环境的通用数字格式。 这与调用getNumberInstance(inLocale)
相同。
Parameters | |
---|---|
inLocale |
Locale
|
Returns | |
---|---|
NumberFormat |
NumberFormat getIntegerInstance ()
返回当前默认语言环境的整数数字格式。 返回的数字格式被配置为使用半RoundingMode.HALF_EVEN
舍入(请参阅RoundingMode.HALF_EVEN
)将浮点数整数到最接近的整数以进行格式化,并仅解析输入字符串的整数部分(请参阅isParseIntegerOnly
)。
Returns | |
---|---|
NumberFormat |
a number format for integer values |
也可以看看:
NumberFormat getIntegerInstance (Locale inLocale)
返回指定语言环境的整数数字格式。 返回的数字格式被配置为使用半RoundingMode.HALF_EVEN
舍入(请参阅RoundingMode.HALF_EVEN
)将浮点数整数到最接近的整数,用于格式化并仅解析输入字符串的整数部分(请参阅isParseIntegerOnly
)。
Parameters | |
---|---|
inLocale |
Locale
|
Returns | |
---|---|
NumberFormat |
a number format for integer values |
也可以看看:
int getMaximumFractionDigits ()
返回数字的小数部分中允许的最大位数。
Returns | |
---|---|
int |
int getMaximumIntegerDigits ()
返回数字整数部分允许的最大位数。
Returns | |
---|---|
int |
也可以看看:
int getMinimumFractionDigits ()
返回数字的小数部分中允许的最小位数。
Returns | |
---|---|
int |
int getMinimumIntegerDigits ()
返回数字整数部分允许的最小位数。
Returns | |
---|---|
int |
也可以看看:
NumberFormat getNumberInstance ()
返回当前默认语言环境的通用数字格式。
Returns | |
---|---|
NumberFormat |
NumberFormat getNumberInstance (Locale inLocale)
返回指定语言环境的通用数字格式。
Parameters | |
---|---|
inLocale |
Locale
|
Returns | |
---|---|
NumberFormat |
NumberFormat getPercentInstance (Locale inLocale)
返回指定语言环境的百分比格式。
Parameters | |
---|---|
inLocale |
Locale
|
Returns | |
---|---|
NumberFormat |
NumberFormat getPercentInstance ()
返回当前默认语言环境的百分比格式。
Returns | |
---|---|
NumberFormat |
RoundingMode getRoundingMode ()
获取此NumberFormat中使用的RoundingMode
。 NumberFormat中此方法的默认实现始终引发UnsupportedOperationException
。 处理不同舍入模式的子类应该重写此方法。
Returns | |
---|---|
RoundingMode |
The RoundingMode used for this NumberFormat. |
Throws | |
---|---|
UnsupportedOperationException |
The default implementation always throws this exception |
int hashCode ()
重写hashCode
Returns | |
---|---|
int |
a hash code value for this object. |
boolean isGroupingUsed ()
如果以此格式使用分组,则返回true。 例如,在英文语言环境中,在编组时,编号1234567可能被格式化为“1,234,567”。 分组分隔符以及每个组的大小取决于语言环境,由NumberFormat的子类确定。
Returns | |
---|---|
boolean |
也可以看看:
boolean isParseIntegerOnly ()
如果此格式仅将数字解析为整数,则返回true。 例如在英文语言环境中,ParseIntegerOnly为true,字符串“1234”。 将被解析为整数值1234,解析将停止在“。”处。 字符。 当然,解析操作接受的确切格式是由语言环境决定的,并由NumberFormat的子类决定。
Returns | |
---|---|
boolean |
Number parse (String source)
从给定字符串的开头解析文本以产生一个数字。 该方法可能不会使用给定字符串的整个文本。
有关数字解析的更多信息,请参阅 parse(String, ParsePosition)
方法。
Parameters | |
---|---|
source |
String : A String whose beginning should be parsed. |
Returns | |
---|---|
Number |
A Number parsed from the string. |
Throws | |
---|---|
ParseException |
if the beginning of the specified string cannot be parsed. |
Number parse (String source, ParsePosition parsePosition)
如果可能的话返回一个Long(例如,在[Long.MIN_VALUE,Long.MAX_VALUE]范围内且没有小数),否则返回Double。 如果设置了IntegerOnly,将停止在小数点处(或等效;例如,对于有理数“1 2/3”,将在1之后停止)。 不抛出异常; 如果没有对象可以被解析,索引是不变的!
Parameters | |
---|---|
source |
String
|
parsePosition |
ParsePosition
|
Returns | |
---|---|
Number |
Object parseObject (String source, ParsePosition pos)
解析字符串中的文本以生成 Number
。
该方法尝试解析从pos
给出的索引开始的文本。 如果解析成功,则在使用最后一个字符(解析不一定使用到字符串末尾的所有字符)之后,索引pos
会更新为索引,并返回解析的数字。 更新的pos
可用于指示下一次调用此方法的起点。 如果发生错误,则不会更改索引pos
,将错误索引pos
设置为发生错误的字符的索引,并返回null。
有关数字解析的更多信息,请参阅 parse(String, ParsePosition)
方法。
Parameters | |
---|---|
source |
String : A String , part of which should be parsed. |
pos |
ParsePosition : A ParsePosition object with index and error index information as described above. |
Returns | |
---|---|
Object |
A Number parsed from the string. In case of error, returns null. |
Throws | |
---|---|
NullPointerException |
if pos is null. |
void setCurrency (Currency currency)
格式化货币值时,设置此数字格式使用的货币。 这不会更新数字格式使用的最小或最大小数位数。
默认实现抛出 UnsupportedOperationException
。
Parameters | |
---|---|
currency |
Currency : the new currency to be used by this number format |
Throws | |
---|---|
UnsupportedOperationException |
if the number format class doesn't implement currency formatting |
NullPointerException |
if currency is null |
void setGroupingUsed (boolean newValue)
设置是否以此格式使用分组。
Parameters | |
---|---|
newValue |
boolean
|
也可以看看:
void setMaximumFractionDigits (int newValue)
设置数字的小数部分允许的最大位数。 maximumFractionDigits必须> = minimumFractionDigits。 如果maximumFractionDigits的新值小于minimumFractionDigits的当前值,那么minimumFractionDigits也将被设置为新值。
Parameters | |
---|---|
newValue |
int : the maximum number of fraction digits to be shown; if less than zero, then zero is used. The concrete subclass may enforce an upper limit to this value appropriate to the numeric type being formatted. |
也可以看看:
void setMaximumIntegerDigits (int newValue)
设置数字整数部分允许的最大位数。 maximumIntegerDigits必须> = minimumIntegerDigits。 如果maximumIntegerDigits的新值小于minimumIntegerDigits的当前值,那么minimumIntegerDigits也将被设置为新值。
Parameters | |
---|---|
newValue |
int : the maximum number of integer digits to be shown; if less than zero, then zero is used. The concrete subclass may enforce an upper limit to this value appropriate to the numeric type being formatted. |
也可以看看:
void setMinimumFractionDigits (int newValue)
设置数字的小数部分中允许的最小位数。 minimumFractionDigits必须<= maximumFractionDigits。 如果minimumFractionDigits的新值超过maximumFractionDigits的当前值,则maximumIntegerDigits也将被设置为新值
Parameters | |
---|---|
newValue |
int : the minimum number of fraction digits to be shown; if less than zero, then zero is used. The concrete subclass may enforce an upper limit to this value appropriate to the numeric type being formatted. |
也可以看看:
void setMinimumIntegerDigits (int newValue)
设置数字整数部分允许的最小位数。 minimumIntegerDigits必须<= maximumIntegerDigits。 如果minimumIntegerDigits的新值超过maximumIntegerDigits的当前值,则maximumIntegerDigits也将被设置为新值
Parameters | |
---|---|
newValue |
int : the minimum number of integer digits to be shown; if less than zero, then zero is used. The concrete subclass may enforce an upper limit to this value appropriate to the numeric type being formatted. |
也可以看看:
void setParseIntegerOnly (boolean value)
设置数字是否应该仅被解析为整数。
Parameters | |
---|---|
value |
boolean
|
也可以看看:
void setRoundingMode (RoundingMode roundingMode)
设置此NumberFormat中使用的RoundingMode
。 NumberFormat中此方法的默认实现始终引发UnsupportedOperationException
。 处理不同舍入模式的子类应该重写此方法。
Parameters | |
---|---|
roundingMode |
RoundingMode : The RoundingMode to be used |
Throws | |
---|---|
UnsupportedOperationException |
The default implementation always throws this exception |
NullPointerException |
if roundingMode is null |
也可以看看: