Most visited

Recently visited

Added in API level 1

NumberFormat

public abstract class NumberFormat
extends Format

java.lang.Object
   ↳ java.text.Format
     ↳ java.text.NumberFormat
Known Direct Subclasses


NumberFormat是所有数字格式的抽象基类。 这个类提供了格式和解析数字的接口。 NumberFormat还提供了用于确定哪些区域设置具有数字格式以及它们的名称是什么的方法。

NumberFormat可帮助您为任何区域设置格式和解析数字。 您的代码可以完全独立于小数点,千位分隔符甚至所用的特定小数位的区域设置约定,或者数字格式是否为十进制。

要为当前语言环境设置一个数字格式,请使用其中一个工厂类方法:

  myString = NumberFormat.getInstance().format(myNumber);
 
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.
 NumberFormat nf = NumberFormat.getInstance();
 for (int i = 0; i < myNumber.length; ++i) {
     output.println(nf.format(myNumber[i]) + "; ");
 }
 
To format a number for a different Locale, specify it in the call to getInstance.
 NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
 
You can also use a NumberFormat to parse numbers:
 myNumber = nf.parse(myString);
 
Use 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。

您还可以使用 parseformat方法的形式与 ParsePositionFieldPosition一起使用,以便:

For example, you can align numbers in two ways:
  1. If you are using a monospaced font with spacing for alignment, you can pass the 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.
  2. If you are using proportional fonts, instead of padding with spaces, measure the width of the string in pixels from the start to 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.

Synchronization

数字格式通常不同步。 建议为每个线程创建单独的格式实例。 如果多个线程同时访问一个格式,它必须在外部同步。

也可以看看:

Summary

Nested classes

class NumberFormat.Field

定义了用于作为属性键常数AttributedCharacterIterator从返回NumberFormat.formatToCharacterIterator和字段标识符在FieldPosition

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()

返回 get*Instance方法可返回本地化实例的所有语言环境的数组。

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中使用的 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。

final 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

Inherited methods

From class java.text.Format
From class java.lang.Object

Constants

FRACTION_FIELD

Added in API level 1
int FRACTION_FIELD

用于构造FieldPosition对象的字段常量。 表示应该返回格式化数字的小数部分的位置。

也可以看看:

常数值:1(0x00000001)

INTEGER_FIELD

Added in API level 1
int INTEGER_FIELD

用于构造FieldPosition对象的字段常量。 表示应该返回格式化数字的整数部分的位置。

也可以看看:

常量值:0(0x00000000)

Protected constructors

NumberFormat

Added in API level 1
NumberFormat ()

唯一的构造函数。 (对于子类构造函数的调用,通常是隐式的。)

Public methods

clone

Added in API level 1
Object clone ()

覆盖可复制

Returns
Object a clone of this instance.

equals

Added in API level 1
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.

format

Added in API level 1
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) 这可能会导致BigIntegerBigDecimal值的量级信息和精度损失。

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

也可以看看:

format

Added in API level 1
String format (double number)

格式专业化。

Parameters
number double
Returns
String
Throws
ArithmeticException if rounding is needed with rounding mode being set to RoundingMode.UNNECESSARY

也可以看看:

format

Added in API level 1
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

也可以看看:

format

Added in API level 1
String format (long number)

格式专业化。

Parameters
number long
Returns
String
Throws
ArithmeticException if rounding is needed with rounding mode being set to RoundingMode.UNNECESSARY

也可以看看:

format

Added in API level 1
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

也可以看看:

getAvailableLocales

Added in API level 1
Locale[] getAvailableLocales ()

返回get*Instance方法可返回本地化实例的所有语言环境的数组。 返回的数组表示Java运行时支持的语言环境,并通过安装在工会NumberFormatProvider实现。 它必须包含至少一个Locale情况下等于Locale.US

Returns
Locale[] An array of locales for which localized NumberFormat instances are available.

getCurrency

Added in API level 1
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

getCurrencyInstance

Added in API level 1
NumberFormat getCurrencyInstance (Locale inLocale)

返回指定语言环境的货币格式。

Parameters
inLocale Locale
Returns
NumberFormat

getCurrencyInstance

Added in API level 1
NumberFormat getCurrencyInstance ()

返回当前默认语言环境的货币格式。

Returns
NumberFormat

getInstance

Added in API level 1
NumberFormat getInstance ()

返回当前默认语言环境的通用数字格式。 这与致电getNumberInstance()相同。

Returns
NumberFormat

getInstance

Added in API level 1
NumberFormat getInstance (Locale inLocale)

返回指定语言环境的通用数字格式。 这与调用getNumberInstance(inLocale)相同。

Parameters
inLocale Locale
Returns
NumberFormat

getIntegerInstance

Added in API level 1
NumberFormat getIntegerInstance ()

返回当前默认语言环境的整数数字格式。 返回的数字格式被配置为使用半RoundingMode.HALF_EVEN舍入(请参阅RoundingMode.HALF_EVEN )将浮点数整数到最接近的整数以进行格式化,并仅解析输入字符串的整数部分(请参阅isParseIntegerOnly )。

Returns
NumberFormat a number format for integer values

也可以看看:

getIntegerInstance

Added in API level 1
NumberFormat getIntegerInstance (Locale inLocale)

返回指定语言环境的整数数字格式。 返回的数字格式被配置为使用半RoundingMode.HALF_EVEN舍入(请参阅RoundingMode.HALF_EVEN )将浮点数整数到最接近的整数,用于格式化并仅解析输入字符串的整数部分(请参阅isParseIntegerOnly )。

Parameters
inLocale Locale
Returns
NumberFormat a number format for integer values

也可以看看:

getMaximumFractionDigits

Added in API level 1
int getMaximumFractionDigits ()

返回数字的小数部分中允许的最大位数。

Returns
int

也可以看看:

getMaximumIntegerDigits

Added in API level 1
int getMaximumIntegerDigits ()

返回数字整数部分允许的最大位数。

Returns
int

也可以看看:

getMinimumFractionDigits

Added in API level 1
int getMinimumFractionDigits ()

返回数字的小数部分中允许的最小位数。

Returns
int

也可以看看:

getMinimumIntegerDigits

Added in API level 1
int getMinimumIntegerDigits ()

返回数字整数部分允许的最小位数。

Returns
int

也可以看看:

getNumberInstance

Added in API level 1
NumberFormat getNumberInstance ()

返回当前默认语言环境的通用数字格式。

Returns
NumberFormat

getNumberInstance

Added in API level 1
NumberFormat getNumberInstance (Locale inLocale)

返回指定语言环境的通用数字格式。

Parameters
inLocale Locale
Returns
NumberFormat

getPercentInstance

Added in API level 1
NumberFormat getPercentInstance (Locale inLocale)

返回指定语言环境的百分比格式。

Parameters
inLocale Locale
Returns
NumberFormat

getPercentInstance

Added in API level 1
NumberFormat getPercentInstance ()

返回当前默认语言环境的百分比格式。

Returns
NumberFormat

getRoundingMode

Added in API level 9
RoundingMode getRoundingMode ()

获取此NumberFormat中使用的RoundingMode NumberFormat中此方法的默认实现始终引发UnsupportedOperationException 处理不同舍入模式的子类应该重写此方法。

Returns
RoundingMode The RoundingMode used for this NumberFormat.
Throws
UnsupportedOperationException The default implementation always throws this exception

也可以看看:

hashCode

Added in API level 1
int hashCode ()

重写hashCode

Returns
int a hash code value for this object.

isGroupingUsed

Added in API level 1
boolean isGroupingUsed ()

如果以此格式使用分组,则返回true。 例如,在英文语言环境中,在编组时,编号1234567可能被格式化为“1,234,567”。 分组分隔符以及每个组的大小取决于语言环境,由NumberFormat的子类确定。

Returns
boolean

也可以看看:

isParseIntegerOnly

Added in API level 1
boolean isParseIntegerOnly ()

如果此格式仅将数字解析为整数,则返回true。 例如在英文语言环境中,ParseIntegerOnly为true,字符串“1234”。 将被解析为整数值1234,解析将停止在“。”处。 字符。 当然,解析操作接受的确切格式是由语言环境决定的,并由NumberFormat的子类决定。

Returns
boolean

parse

Added in API level 1
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.

parse

Added in API level 1
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

也可以看看:

parseObject

Added in API level 1
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.

setCurrency

Added in API level 1
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

setGroupingUsed

Added in API level 1
void setGroupingUsed (boolean newValue)

设置是否以此格式使用分组。

Parameters
newValue boolean

也可以看看:

setMaximumFractionDigits

Added in API level 1
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.

也可以看看:

setMaximumIntegerDigits

Added in API level 1
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.

也可以看看:

setMinimumFractionDigits

Added in API level 1
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.

也可以看看:

setMinimumIntegerDigits

Added in API level 1
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.

也可以看看:

setParseIntegerOnly

Added in API level 1
void setParseIntegerOnly (boolean value)

设置数字是否应该仅被解析为整数。

Parameters
value boolean

也可以看看:

setRoundingMode

Added in API level 9
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

也可以看看:

Hooray!