java.lang.Object java.text.Format java.text.NumberFormat
public abstract class NumberFormat
NumberFormat
is the abstract base class for all number formats. This class provides the interface for formatting and parsing numbers. NumberFormat
also provides methods for determining which locales have number formats, and what their names are.
NumberFormat
helps you to format and parse numbers for any locale. Your code can be completely independent of the locale conventions for decimal points, thousands-separators, or even the particular decimal digits used, or whether the number format is even decimal.
To format a number for the current Locale, use one of the factory class methods:
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 < a.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%.
You can also control the display of numbers with such methods as setMinimumFractionDigits
. If you want even more control over the format or parsing, or want to give your users more control, you can try casting the NumberFormat
you get from the factory methods to a DecimalFormat
. This will work for the vast majority of locales; just remember to put it in a try
block in case you encounter an unusual one.
NumberFormat and DecimalFormat are designed such that some controls work for formatting and others work for parsing. The following is the detailed description for each these control methods,
setParseIntegerOnly : only affects parsing, e.g. if true, "3456.78" -> 3456 (and leaves the parse position just after index 6) if false, "3456.78" -> 3456.78 (and leaves the parse position just after index 8) This is independent of formatting. If you want to not show a decimal point where there might be no digits after the decimal point, use setDecimalSeparatorAlwaysShown.
setDecimalSeparatorAlwaysShown : only affects formatting, and only where there might be no digits after the decimal point, such as with a pattern like "#,##0.##", e.g., if true, 3456.00 -> "3,456." if false, 3456.00 -> "3456" This is independent of parsing. If you want parsing to stop at the decimal point, use setParseIntegerOnly.
You can also use forms of the parse
and format
methods with ParsePosition
and FieldPosition
to allow you to:
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.Number formats are generally not synchronized. It is recommended to create separate format instances for each thread. If multiple threads access a format concurrently, it must be synchronized externally.
DecimalFormat
, ChoiceFormat
, Serialized Form
static class
NumberFormat.Field
AttributedCharacterIterator
returned from NumberFormat.formatToCharacterIterator
and as field identifiers in FieldPosition
. Field Summary static int
FRACTION_FIELD
static int
INTEGER_FIELD
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
methods of this class can return localized instances. 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()
boolean
isGroupingUsed()
boolean
isParseIntegerOnly()
Number
parse(String source)
abstract Number
parse(String source, ParsePosition parsePosition)
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)
public static final int INTEGER_FIELD
FieldPosition
, Constant Field Values
public static final int FRACTION_FIELD
FieldPosition
, Constant Field Values
public NumberFormat()
public StringBuffer format(Object number, StringBuffer toAppendTo, FieldPosition pos)
Number
.
This implementation extracts the number's value using Number.longValue()
for all integral type values that can be converted to long
without loss of information, including BigInteger
values with a bit length
of less than 64, and Number.doubleValue()
for all other types. It then calls format(long,java.lang.StringBuffer,java.text.FieldPosition)
or format(double,java.lang.StringBuffer,java.text.FieldPosition)
. This may result in loss of magnitude information and precision for BigInteger
and BigDecimal
values.
format
in class Format
number
- the number to format
toAppendTo
- the StringBuffer
to which the formatted text is to be appended
pos
- On input: an alignment field, if desired. On output: the offsets of the alignment field.
toAppendTo
IllegalArgumentException
- if number
is null or not an instance of Number
.
NullPointerException
- if toAppendTo
or pos
is null
FieldPosition
public final Object parseObject(String source, ParsePosition pos)
Number
.
The method attempts to parse text starting at the index given by pos
. If parsing succeeds, then the index of pos
is updated to the index after the last character used (parsing does not necessarily use all characters up to the end of the string), and the parsed number is returned. The updated pos
can be used to indicate the starting point for the next call to this method. If an error occurs, then the index of pos
is not changed, the error index of pos
is set to the index of the character where the error occurred, and null is returned.
See the parse(String, ParsePosition)
method for more information on number parsing.
parseObject
in class Format
source
- A String
, part of which should be parsed.
pos
- A ParsePosition
object with index and error index information as described above.
Number
parsed from the string. In case of error, returns null.
NullPointerException
- if pos
is 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
See the parse(String, ParsePosition)
method for more information on number parsing.
source
- A String
whose beginning should be parsed.
Number
parsed from the string.
ParseException
- if the beginning of the specified string cannot be parsed.
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
) for formatting, and to parse only the integer part of an input string (see isParseIntegerOnly
).
public static NumberFormat getIntegerInstance(Locale inLocale)
ROUND_HALF_EVEN
) for formatting, and to parse only the integer part of an input string (see isParseIntegerOnly
).
inLocale
- the locale for which a number format is needed
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
methods of this class can return localized instances. The array returned must contain at least a Locale
instance equal to Locale.US
.
NumberFormat
instances are available.
public int hashCode()
hashCode
in class Object
Object.equals(java.lang.Object)
, Hashtable
public boolean equals(Object obj)
equals
in class Object
obj
- the reference object with which to compare.
true
if this object is the same as the obj argument; false
otherwise.
Object.hashCode()
, Hashtable
public Object clone()
clone
in class Format
Cloneable
public boolean isGroupingUsed()
setGroupingUsed(boolean)
public void setGroupingUsed(boolean newValue)
isGroupingUsed()
public int getMaximumIntegerDigits()
setMaximumIntegerDigits(int)
public void setMaximumIntegerDigits(int newValue)
newValue
- 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.
getMaximumIntegerDigits()
public int getMinimumIntegerDigits()
setMinimumIntegerDigits(int)
public void setMinimumIntegerDigits(int newValue)
newValue
- 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.
getMinimumIntegerDigits()
public int getMaximumFractionDigits()
setMaximumFractionDigits(int)
public void setMaximumFractionDigits(int newValue)
newValue
- 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.
getMaximumFractionDigits()
public int getMinimumFractionDigits()
setMinimumFractionDigits(int)
public void setMinimumFractionDigits(int newValue)
newValue
- 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.
getMinimumFractionDigits()
public Currency getCurrency()
setCurrency
.
The default implementation throws UnsupportedOperationException
.
null
UnsupportedOperationException
- if the number format class doesn't implement currency formatting
public void setCurrency(Currency currency)
The default implementation throws UnsupportedOperationException
.
currency
- the new currency to be used by this number format
UnsupportedOperationException
- if the number format class doesn't implement currency formatting
NullPointerException
- if currency
is null
Copyright © 2004, 2010 Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4