public abstract class NumberFormat extends Format
NumberFormat是所有数字格式的抽象基类。
该类提供格式化和解析数字的接口。
NumberFormat还提供了确定哪些区域设置具有数字格式以及它们的名称的方法。
NumberFormat可帮助您格式化和解析任何区域设置的数字。 您的代码可以完全独立于小数点,数千分隔符或甚至使用的特定十进制数字的区域设置约定,或者数字格式是否为偶数十进制。
要格式化当前语言环境的数字,请使用其中一种工厂类方法:
如果要格式化多个数字,更多的是获取格式并多次使用它,以便系统不必多次获取有关本地语言和国家/地区约定的信息。myString = NumberFormat.getInstance().format(myNumber);
要格式化不同语言环境的号码,请在调用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。
您还可以使用parse和format方法与ParsePosition和FieldPosition ,以允许您:
FieldPosition您的通话形式,与field = INTEGER_FIELD 。 在输出时, getEndIndex将被设置为整数的最后一个字符与小数点之间的偏移量。 在字符串前面添加(desiredSpaceCount - getEndIndex)空格。 getEndIndex的字符串宽度(以像素为getEndIndex 。 然后在绘制文本之前将笔移动(desiredPixelWidth - widthToAlignmentPoint)。 它也可以在没有十进制的情况下工作,但最后可能有其他字符,例如括号为负数:“(12)”表示-12。 数字格式通常不同步。 建议为每个线程创建单独的格式实例。 如果多个线程同时访问格式,则必须在外部进行同步。
DecimalFormat , ChoiceFormat , Serialized Form
| Modifier and Type | Class and Description |
|---|---|
static class |
NumberFormat.Field
定义在
AttributedCharacterIterator返回的
NumberFormat.formatToCharacterIterator中用作属性键的
AttributedCharacterIterator ,以及FieldPosition中的字段
FieldPosition 。
|
| Modifier and Type | Field and Description |
|---|---|
static int |
FRACTION_FIELD
用于构造FieldPosition对象的字段常量。
|
static int |
INTEGER_FIELD
用于构造FieldPosition对象的字段常量。
|
| Modifier | Constructor and Description |
|---|---|
protected |
NumberFormat()
唯一的构造函数。
|
| Modifier and Type | Method and Description |
|---|---|
Object |
clone()
覆盖可克隆。
|
boolean |
equals(Object obj)
覆盖等于。
|
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()
返回当前默认的
FORMAT区域设置的货币格式。
|
static NumberFormat |
getCurrencyInstance(Locale inLocale)
返回指定区域设置的货币格式。
|
static NumberFormat |
getInstance()
返回当前默认的
FORMAT区域设置的通用数字格式。
|
static NumberFormat |
getInstance(Locale inLocale)
返回指定区域设置的通用数字格式。
|
static NumberFormat |
getIntegerInstance()
返回当前默认值
FORMAT区域设置的整数格式。
|
static NumberFormat |
getIntegerInstance(Locale inLocale)
返回指定区域设置的整数格式。
|
int |
getMaximumFractionDigits()
返回数字小数部分允许的最大位数。
|
int |
getMaximumIntegerDigits()
返回数字整数部分允许的最大位数。
|
int |
getMinimumFractionDigits()
返回数字小数部分允许的最小位数。
|
int |
getMinimumIntegerDigits()
返回数字整数部分允许的最小位数。
|
static NumberFormat |
getNumberInstance()
返回当前默认的
FORMAT区域设置的通用数字格式。
|
static NumberFormat |
getNumberInstance(Locale inLocale)
返回指定区域设置的通用数字格式。
|
static NumberFormat |
getPercentInstance()
返回当前默认值
FORMAT区域设置的百分比格式。
|
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.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。
|
format, formatToCharacterIterator, parseObjectpublic static final int INTEGER_FIELD
FieldPosition , Constant Field Values
public static final int FRACTION_FIELD
FieldPosition , Constant Field Values
public StringBuffer format(Object number, StringBuffer toAppendTo, FieldPosition pos)
Number的任何子类。
该实现使用Number.longValue()为所有可转换为long而不丢失信息的积分类型值提取数字的值,包括BigInteger值为bit length ,小于64的值,以及Number.doubleValue()为所有其他类型。 然后调用format(long,java.lang.StringBuffer,java.text.FieldPosition)或format(double,java.lang.StringBuffer,java.text.FieldPosition) 。 这可能导致BigInteger和BigDecimal值的BigInteger和BigDecimal 。
format在
Format
number - 要格式化的号码
toAppendTo -所述
StringBuffer到的格式化的文本将被所附
pos - 打开输入:如果需要,对齐字段。
输出:对齐字段的偏移量。
toAppendTo
IllegalArgumentException - 如果
number为null或不是
Number的实例。
NullPointerException - 如果
toAppendTo或
pos为空
ArithmeticException - 如果舍入方式设置为RoundingMode.UNNECESSARY,则需要舍入
FieldPosition
public final Object parseObject(String source, ParsePosition pos)
Number 。
该方法尝试从pos给出的索引开始解析文本。 如果解析成功,那么pos的索引将更新为使用最后一个字符后的索引(解析不一定使用字符串末尾的所有字符),并返回解析的数字。 更新的pos可用于指示下一次调用此方法的起始点。 如果发生错误,则pos的索引不改变,将错误发生的pos的索引设置为pos的错误索引,返回null。
有关数字解析的更多信息,请参阅parse(String, ParsePosition)方法。
parseObject在
Format
source - A
String ,其中一部分应该被解析。
pos - 具有
ParsePosition的索引和错误索引信息的
ParsePosition对象。
Number从字符串中解析。
万一出错,返回null。
NullPointerException - 如果
pos为空。
public final String format(double number)
number - 双数格式
ArithmeticException - 如果舍入方式设置为RoundingMode.UNNECESSARY,则需要舍入
Format.format(java.lang.Object)
public final String format(long number)
number - 长数格式
ArithmeticException - 如果舍入模式设置为RoundingMode.UNNECESSARY,则需要舍入
Format.format(java.lang.Object)
public abstract StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos)
number - 双数格式
toAppendTo - 要附加格式化文本的StringBuffer
pos - 字段位置
ArithmeticException - 如果舍入模式设置为RoundingMode.UNNECESSARY,则需要舍入
Format.format(java.lang.Object)
public abstract StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos)
number - 长数格式
toAppendTo - 要附加格式化文本的StringBuffer
pos - 现场位置
ArithmeticException - 如果舍入方式设置为RoundingMode.UNNECESSARY,则需要舍入
Format.format(java.lang.Object)
public abstract Number parse(String source, ParsePosition parsePosition)
source - 要解析的字符串
parsePosition - 解析位置
isParseIntegerOnly() ,
Format.parseObject(java.lang.String, java.text.ParsePosition)
public Number parse(String source) throws ParseException
source - A
String ,其开头应被解析。
Number从字符串中解析。
ParseException - 如果指定字符串的开头不能被解析。
public boolean isParseIntegerOnly()
true如果数字只能被解析为整数;
false否则
public void setParseIntegerOnly(boolean value)
value - true如果数字只能解析为整数;
false否则
isParseIntegerOnly()
public static final NumberFormat getInstance()
FORMAT区域设置的通用数字格式。
这跟调用getNumberInstance()相同。
NumberFormat实例
public static NumberFormat getInstance(Locale inLocale)
getNumberInstance(inLocale)相同。
inLocale - 所需的语言环境
NumberFormat实例
public static final NumberFormat getNumberInstance()
FORMAT区域设置的通用数字格式。
这相当于调用getNumberInstance(Locale.getDefault(Locale.Category.FORMAT)) 。
NumberFormat实例
Locale.getDefault(java.util.Locale.Category) ,
Locale.Category.FORMAT
public static NumberFormat getNumberInstance(Locale inLocale)
inLocale - 所需的语言环境
NumberFormat实例
public static final NumberFormat getIntegerInstance()
FORMAT区域设置的整数格式。
返回的数字格式被配置成使用半甚至舍入圆浮点数到最接近的整数(参见RoundingMode.HALF_EVEN )进行格式化,并且解析仅一个输入字符串的整数部分(参见isParseIntegerOnly )。
这相当于打getIntegerInstance(Locale.getDefault(Locale.Category.FORMAT)) 。
getRoundingMode() ,
Locale.getDefault(java.util.Locale.Category) ,
Locale.Category.FORMAT
public static NumberFormat getIntegerInstance(Locale inLocale)
RoundingMode.HALF_EVEN )进行格式化,并且解析仅一个输入字符串的整数部分(参见isParseIntegerOnly )。
inLocale - 所需的语言环境
getRoundingMode()
public static final NumberFormat getCurrencyInstance()
FORMAT区域设置的货币格式。
这相当于调用getCurrencyInstance(Locale.getDefault(Locale.Category.FORMAT)) 。
NumberFormat实例
Locale.getDefault(java.util.Locale.Category) ,
Locale.Category.FORMAT
public static NumberFormat getCurrencyInstance(Locale inLocale)
inLocale - 所需的语言环境
NumberFormat实例
public static final NumberFormat getPercentInstance()
FORMAT区域设置的百分比格式。
这相当于调用getPercentInstance(Locale.getDefault(Locale.Category.FORMAT)) 。
NumberFormat实例
Locale.getDefault(java.util.Locale.Category) ,
Locale.Category.FORMAT
public static NumberFormat getPercentInstance(Locale inLocale)
inLocale - 所需的语言环境
NumberFormat实例
public static Locale[] getAvailableLocales()
get*Instance方法可以返回本地化实例。
返回的数组表示由Java运行时支持的语言环境和已安装的NumberFormatProvider 实现的联合。
它必须包含至少Locale实例等于Locale.US 。
NumberFormat实例可用。
public int hashCode()
hashCode在
Object
Object.equals(java.lang.Object) ,
System.identityHashCode(java.lang.Object)
public boolean equals(Object obj)
equals在
Object
obj - 与之比较的参考对象。
true如果此对象与obj参数相同;
false否则。
Object.hashCode() , HashMap
public boolean isGroupingUsed()
true如果使用分组;
false否则
setGroupingUsed(boolean)
public void setGroupingUsed(boolean newValue)
newValue - true如果使用分组;
false否则
isGroupingUsed()
public int getMaximumIntegerDigits()
setMaximumIntegerDigits(int)
public void setMaximumIntegerDigits(int newValue)
newValue - 要显示的最大整数位数;
如果小于零,则使用零。
具体的子类可能会强制适用于正在格式化的数字类型的此值的上限。
getMaximumIntegerDigits()
public int getMinimumIntegerDigits()
setMinimumIntegerDigits(int)
public void setMinimumIntegerDigits(int newValue)
newValue - 要显示的最小整数位数;
如果小于零,则使用零。
具体的子类可能会强制适用于正在格式化的数字类型的此值的上限。
getMinimumIntegerDigits()
public int getMaximumFractionDigits()
setMaximumFractionDigits(int)
public void setMaximumFractionDigits(int newValue)
newValue - 要显示的最小数字位数;
如果小于零,则使用零。
具体的子类可能会强制适用于正在格式化的数字类型的此值的上限。
getMaximumFractionDigits()
public int getMinimumFractionDigits()
setMinimumFractionDigits(int)
public void setMinimumFractionDigits(int newValue)
newValue - 要显示的最小数字数字;
如果小于零,则使用零。
具体的子类可能会强制适用于正在格式化的数字类型的此值的上限。
getMinimumFractionDigits()
public Currency getCurrency()
setCurrency设置货币,则返回值可能为null。
默认实现抛出UnsupportedOperationException 。
null
UnsupportedOperationException - 如果数字格式类不实现货币格式
public void setCurrency(Currency currency)
默认实现抛出UnsupportedOperationException 。
currency - 此数字格式使用的新货币
UnsupportedOperationException - 如果数字格式类不实现货币格式
NullPointerException - 如果
currency为空
public RoundingMode getRoundingMode()
RoundingMode。
NumberFormat中此方法的默认实现始终为UnsupportedOperationException 。
处理不同舍入模式的子类应该覆盖此方法。
RoundingMode用于此的NumberFormat。
UnsupportedOperationException - 默认实现总是引发这个异常
setRoundingMode(RoundingMode)
public void setRoundingMode(RoundingMode roundingMode)
RoundingMode。
NumberFormat中此方法的默认实现总是抛出UnsupportedOperationException 。
处理不同舍入模式的子类应该覆盖此方法。
roundingMode - 要使用的
RoundingMode
UnsupportedOperationException - 默认实现总是引发这个异常
NullPointerException - 如果
roundingMode为空
getRoundingMode()
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.