| java.lang.Object | |||
| ↳ | java.text.Format | ||
| ↳ | java.text.NumberFormat | ||
| ↳ | java.text.DecimalFormat | ||
A concrete subclass of NumberFormat that formats decimal numbers. It has a variety of features designed to make it possible to parse and format numbers in any locale, including support for Western, Arabic, or Indic digits. It also supports different flavors of numbers, including integers ("123"), fixed-point numbers ("123.4"), scientific notation ("1.23E4"), percentages ("12%"), and currency amounts ("$123"). All of these flavors can be easily localized. 
 This is an enhanced version of DecimalFormat that is based on the standard version in the RI. New or changed functionality is labeled NEW. 
 To obtain a NumberFormat for a specific locale (including the default locale), call one of NumberFormat's factory methods such as NumberFormat.getInstance. Do not call the DecimalFormat constructors directly, unless you know what you are doing, since the NumberFormat factory methods may return subclasses other than DecimalFormat. If you need to customize the format object, do something like this: 
 
       
 NumberFormat f = NumberFormat.getInstance(loc);
 if (f instanceof DecimalFormat) {
     ((DecimalFormat)f).setDecimalSeparatorAlwaysShown(true);
 }
  
       
       A DecimalFormat consists of a pattern and a set of symbols. The pattern may be set directly using applyPattern(String), or indirectly using other API methods which manipulate aspects of the pattern, such as the minimum number of integer digits. The symbols are stored in a DecimalFormatSymbols object. When using the NumberFormat factory methods, the pattern and symbols are read from ICU's locale data. 
Many characters in a pattern are taken literally; they are matched during parsing and are written out unchanged during formatting. On the other hand, special characters stand for other characters, strings, or classes of characters. For example, the '#' character is replaced by a localized digit. Often the replacement character is the same as the pattern character; in the U.S. locale, the ',' grouping character is replaced by ','. However, the replacement is still happening, and if the symbols are modified, the grouping character changes. Some special characters affect the behavior of the formatter by their presence; for example, if the percent character is seen, then the value is multiplied by 100 before being displayed.
To insert a special character in a pattern as a literal, that is, without any special meaning, the character must be quoted. There are some exceptions to this which are noted below.
 The characters listed here are used in non-localized patterns. Localized patterns use the corresponding characters taken from this formatter's DecimalFormatSymbols object instead, and these characters lose their special status. Two exceptions are the currency sign and quote, which are not localized. 
Symbol Location Localized? Meaning 0Number Yes Digit. @Number No NEW Significant digit. #Number Yes Digit, leading zeroes are not shown. .Number Yes Decimal separator or monetary decimal separator. -Number Yes Minus sign. ,Number Yes Grouping separator. ENumber Yes Separates mantissa and exponent in scientific notation. Does not need to be quoted in prefix or suffix. +Exponent Yes NEW Prefix positive exponents with localized plus sign. Does not need to be quoted in prefix or suffix. ;Subpattern boundary Yes Separates positive and negative subpatterns. %Prefix or suffix Yes Multiply by 100 and show as percentage. ‰(\u2030)Prefix or suffix Yes Multiply by 1000 and show as per mille. ¤(\u00A4)Prefix or suffix No Currency sign, replaced by currency symbol. If doubled, replaced by international currency symbol. If present in a pattern, the monetary decimal separator is used instead of the decimal separator. 'Prefix or suffix No Used to quote special characters in a prefix or suffix, for example, "'#'#"formats 123 to"#123". To create a single quote itself, use two in a row:"# o''clock".*Prefix or suffix boundary Yes NEW Pad escape, precedes pad character. 
 A DecimalFormat pattern contains a positive and negative subpattern, for example, "#,##0.00;(#,##0.00)". Each subpattern has a prefix, a numeric part and a suffix. If there is no explicit negative subpattern, the negative subpattern is the localized minus sign prefixed to the positive subpattern. That is, "0.00" alone is equivalent to "0.00;-0.00". If there is an explicit negative subpattern, it serves only to specify the negative prefix and suffix; the number of digits, minimal digits, and other characteristics are ignored in the negative subpattern. This means that "#,##0.0#;(#)" produces precisely the same result as "#,##0.0#;(#,##0.0#)". 
 The prefixes, suffixes, and various symbols used for infinity, digits, thousands separators, decimal separators, etc. may be set to arbitrary values, and they will appear properly during formatting. However, care must be taken that the symbols and strings do not conflict, or parsing will be unreliable. For example, either the positive and negative prefixes or the suffixes must be distinct for parse(String) to be able to distinguish positive from negative values. Another example is that the decimal separator and thousands separator should be distinct characters, or parsing will be impossible. 
The grouping separator is a character that separates clusters of integer digits to make large numbers more legible. It is commonly used for thousands, but in some locales it separates ten-thousands. The grouping size is the number of digits between the grouping separators, such as 3 for "100,000,000" or 4 for "1 0000 0000". There are actually two different grouping sizes: One used for the least significant integer digits, the primary grouping size, and one used for all others, the secondary grouping size. In most locales these are the same, but sometimes they are different. For example, if the primary grouping interval is 3, and the secondary is 2, then this corresponds to the pattern "#,##,##0", and the number 123456789 is formatted as "12,34,56,789". If a pattern contains multiple grouping separators, the interval between the last one and the end of the integer defines the primary grouping size, and the interval between the last two defines the secondary grouping size. All others are ignored, so "#,##,###,####", "###,###,####" and "##,#,###,####" produce the same result.
 Illegal patterns, such as "#.#.#" or "#.###,###", will cause DecimalFormat to throw an IllegalArgumentException with a message that describes the problem. 
 pattern    := subpattern (';' subpattern)?
 subpattern := prefix? number exponent? suffix?
 number     := (integer ('.' fraction)?) | sigDigits
 prefix     := '\\u0000'..'\\uFFFD' - specialCharacters
 suffix     := '\\u0000'..'\\uFFFD' - specialCharacters
 integer    := '#'* '0'* '0'
 fraction   := '0'* '#'*
 sigDigits  := '#'* '@' '@'* '#'*
 exponent   := 'E' '+'? '0'* '0'
 padSpec    := '*' padChar
 padChar    := '\\u0000'..'\\uFFFD' - quote
 Notation:
   X*       0 or more instances of X
   X?       0 or 1 instances of X
   X|Y      either X or Y
   C..D     any character from C up to D, inclusive
   S-T      characters in S, except those in T
  The first subpattern is for positive numbers. The second (optional) subpattern is for negative numbers. 
      Not indicated in the BNF syntax above:
padSpec may appear before the prefix, after the prefix, before the suffix, after the suffix or not at all.  DecimalFormat parses all Unicode characters that represent decimal digits, as defined by digit(int, int). In addition, DecimalFormat also recognizes as digits the ten consecutive characters starting with the localized zero digit defined in the DecimalFormatSymbols object. During formatting, the DecimalFormatSymbols-based digits are written out. 
During parsing, grouping separators are ignored.
 If parse(String, ParsePosition) fails to parse a string, it returns null and leaves the parse position unchanged. 
Formatting is guided by several parameters, all of which can be specified either using a pattern or using the API. The following description applies to formats that do not use scientific notation or significant digits.
Special Values
 NaN is represented as a single character, typically \uFFFD. This character is determined by the DecimalFormatSymbols object. This is the only value for which the prefixes and suffixes are not used. 
 Infinity is represented as a single character, typically \u221E, with the positive or negative prefixes and suffixes applied. The infinity character is determined by the DecimalFormatSymbols object.  
 Numbers in scientific notation are expressed as the product of a mantissa and a power of ten, for example, 1234 can be expressed as 1.234 x 103. The mantissa is typically in the half-open interval [1.0, 10.0) or sometimes [0.0, 1.0), but it does not need to be. DecimalFormat supports arbitrary mantissas. DecimalFormat can be instructed to use scientific notation through the API or through the pattern. In a pattern, the exponent character immediately followed by one or more digit characters indicates scientific notation. Example: "0.###E0" formats the number 1234 as "1.234E3". 
  DecimalFormat has two ways of controlling how many digits are shown: (a) significant digit counts or (b) integer and fraction digit counts. Integer and fraction digit counts are described above. When a formatter uses significant digits counts, the number of integer and fraction digits is not specified directly, and the formatter settings for these counts are ignored. Instead, the formatter uses as many integer and fraction digits as required to display the specified number of significant digits. 
Pattern Minimum significant digits Maximum significant digits Number Output of format() @@@3 3 12345 12300@@@3 3 0.12345 0.123@@##2 4 3.14159 3.142@@##2 4 1.23004 1.23
'@' and '#' characters. The minimum number of significant digits is the number of '@' characters. The maximum number of significant digits is the number of '@' characters plus the number of '#' characters following on the right. For example, the pattern "@@@" indicates exactly 3 significant digits. The pattern "@##" indicates from 1 to 3 significant digits. Trailing zero digits to the right of the decimal separator are suppressed after the minimum number of significant digits have been shown. For example, the pattern "@##" formats the number 0.1203 as "0.12". '0' pattern character. Patterns such as "@00" or "@.###" are disallowed. '#' characters may be prepended to the left of the leftmost '@' character. These have no effect on the minimum and maximum significant digit counts, but may be used to position grouping separators. For example, "#,#@#" indicates a minimum of one significant digit, a maximum of two significant digits, and a grouping size of three. '@' pattern character. '@' pattern character. "@@###E0" is equivalent to "0.0###E0".  DecimalFormat supports padding the result of format to a specific width. Padding may be specified either through the API or through the pattern syntax. In a pattern, the pad escape character followed by a single pad character causes padding to be parsed and formatted. The pad escape character is '*' in unlocalized patterns. For example, "$*x#,##0.00" formats 123 to "$xx123.00", and 1234 to "$1,234.00". 
"* #0 o''clock", the format width is 10.chars).applyPattern(String) throws an IllegalArgumentException. If there is no prefix, before the prefix and after the prefix are equivalent, likewise for the suffix.char immediately following the pad escape is the pad character. This may be any character, including a special pattern character. That is, the pad escape escapes the following character. If there is no character after the pad escape, then the pattern is illegal. DecimalFormat objects are not synchronized. Multiple threads should not access one formatter concurrently.
| [Expand] 
           Inherited Constants
           | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|  From class java.text.NumberFormat | |||||||||||
| Public Constructors | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|  | 
           Constructs a new 
            DecimalFormatfor formatting and parsing numbers for the user's default locale. | ||||||||||
|  | 
           Constructs a new 
            DecimalFormatusing the specified non-localized pattern and theDecimalFormatSymbolsfor the user's default Locale. | ||||||||||
|  | 
           Constructs a new 
            DecimalFormatusing the specified non-localized pattern andDecimalFormatSymbols. | ||||||||||
| Public Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|  | 
           Changes the pattern of this decimal format to the specified pattern which uses localized pattern characters.
           | ||||||||||
|  | 
           Changes the pattern of this decimal format to the specified pattern which uses non-localized pattern characters.
           | ||||||||||
|  | 
           Returns a new instance of 
            DecimalFormatwith the same pattern and properties. | ||||||||||
|  | 
           Compares the specified object to this decimal format and indicates if they are equal.
           | ||||||||||
|  | 
           Formats the specified long value as a string using the pattern of this number format and appends the string to the specified string buffer.
           | ||||||||||
|  | 
           Formats the specified double value as a string using the pattern of this number format and appends the string to the specified string buffer.
           | ||||||||||
|  | 
           Formats a number into a supplied buffer.
           | ||||||||||
|  | 
           Formats the specified object using the rules of this decimal format and returns an 
            AttributedCharacterIteratorwith the formatted number and attributes. | ||||||||||
|  | 
           Returns the currency used by this decimal format.
           | ||||||||||
|  | 
           Returns the 
            DecimalFormatSymbolsused by this decimal format. | ||||||||||
|  | 
           Returns the number of digits grouped together by the grouping separator.
           | ||||||||||
|  | 
           Returns the multiplier which is applied to the number before formatting or after parsing.
           | ||||||||||
|  | 
           Returns the prefix which is formatted or parsed before a negative number.
           | ||||||||||
|  | 
           Returns the suffix which is formatted or parsed after a negative number.
           | ||||||||||
|  | 
           Returns the prefix which is formatted or parsed before a positive number.
           | ||||||||||
|  | 
           Returns the suffix which is formatted or parsed after a positive number.
           | ||||||||||
|  | 
           Returns the 
            RoundingModeused by thisNumberFormat. | ||||||||||
|  | 
           Returns an integer hash code for this object.
           | ||||||||||
|  | 
           Indicates whether the decimal separator is shown when there are no fractional digits.
           | ||||||||||
|  | 
           Indicates whether grouping will be used in this format.
           | ||||||||||
|  | 
           This value indicates whether the return object of the parse operation is of type 
            BigDecimal. | ||||||||||
|  | 
           Indicates whether parsing with this decimal format will only return numbers of type 
            java.lang.Integer. | ||||||||||
|  | 
           Parses a 
            LongorDoublefrom the specified string starting at the index specified byposition. | ||||||||||
|  | 
           Sets the currency used by this decimal format.
           | ||||||||||
|  | 
           Sets the 
            DecimalFormatSymbolsused by this decimal format. | ||||||||||
|  | 
           Sets whether the decimal separator is shown when there are no fractional digits.
           | ||||||||||
|  | 
           Sets the number of digits grouped together by the grouping separator.
           | ||||||||||
|  | 
           Sets whether or not grouping will be used in this format.
           | ||||||||||
|  | 
           Sets the maximum number of digits after the decimal point.
           | ||||||||||
|  | 
           Sets the maximum number of digits before the decimal point.
           | ||||||||||
|  | 
           Sets the minimum number of digits after the decimal point.
           | ||||||||||
|  | 
           Sets the minimum number of digits before the decimal point.
           | ||||||||||
|  | 
           Sets the multiplier which is applied to the number before formatting or after parsing.
           | ||||||||||
|  | 
           Sets the prefix which is formatted or parsed before a negative number.
           | ||||||||||
|  | 
           Sets the suffix which is formatted or parsed after a negative number.
           | ||||||||||
|  | 
           Sets the behavior of the parse method.
           | ||||||||||
|  | 
           Sets the flag that indicates whether numbers will be parsed as integers.
           | ||||||||||
|  | 
           Sets the prefix which is formatted or parsed before a positive number.
           | ||||||||||
|  | 
           Sets the suffix which is formatted or parsed after a positive number.
           | ||||||||||
|  | 
           Sets the 
            RoundingModeused by thisNumberFormat. | ||||||||||
|  | 
           Returns the pattern of this decimal format using localized pattern characters.
           | ||||||||||
|  | 
           Returns the pattern of this decimal format using non-localized pattern characters.
           | ||||||||||
| [Expand] 
           Inherited Methods
           | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|  From class java.text.NumberFormat | |||||||||||
|  From class java.text.Format | |||||||||||
|  From class java.lang.Object | |||||||||||
Constructs a new DecimalFormat for formatting and parsing numbers for the user's default locale. See "Be wary of the default locale". 
Constructs a new DecimalFormat using the specified non-localized pattern and the DecimalFormatSymbols for the user's default Locale. See "Be wary of the default locale".
| pattern | the non-localized pattern. | 
|---|
| IllegalArgumentException | if the pattern cannot be parsed. | 
|---|
Constructs a new DecimalFormat using the specified non-localized pattern and DecimalFormatSymbols.
| pattern | the non-localized pattern. | 
|---|---|
| value | the DecimalFormatSymbols. | 
| IllegalArgumentException | if the pattern cannot be parsed. | 
|---|
Changes the pattern of this decimal format to the specified pattern which uses localized pattern characters.
| pattern | the localized pattern. | 
|---|
| IllegalArgumentException | if the pattern cannot be parsed. | 
|---|
Changes the pattern of this decimal format to the specified pattern which uses non-localized pattern characters.
| pattern | the non-localized pattern. | 
|---|
| IllegalArgumentException | if the pattern cannot be parsed. | 
|---|
Returns a new instance of DecimalFormat with the same pattern and properties. 
Compares the specified object to this decimal format and indicates if they are equal. In order to be equal, object must be an instance of DecimalFormat with the same pattern and properties.
| object | the object to compare with this object. | 
|---|
true if the specified object is equal to this decimal format; false otherwise.Formats the specified long value as a string using the pattern of this number format and appends the string to the specified string buffer.
 If the field member of position contains a value specifying a format field, then its beginIndex and endIndex members will be updated with the position of the first occurrence of this field in the formatted text.
| value | the long to format. | 
|---|---|
| buffer | the target string buffer to append the formatted long value to. | 
| position | on input: an optional alignment field; on output: the offsets of the alignment field in the formatted text. | 
Formats the specified double value as a string using the pattern of this number format and appends the string to the specified string buffer.
 If the field member of position contains a value specifying a format field, then its beginIndex and endIndex members will be updated with the position of the first occurrence of this field in the formatted text.
| value | the double to format. | 
|---|---|
| buffer | the target string buffer to append the formatted double value to. | 
| position | on input: an optional alignment field; on output: the offsets of the alignment field in the formatted text. | 
Formats a number into a supplied buffer.
 The number must be a subclass of Number. Instances of Byte, Short, Integer, and Long have Number.longValue invoked, as do instances of BigInteger where BigInteger.bitLength returns less than 64. All other values have Number.doubleValue invoked instead. 
 If the field member of field contains a value specifying a format field, then its beginIndex and endIndex members will be updated with the position of the first occurrence of this field in the formatted text.
| number | the object to format, must be a Number. | 
|---|---|
| buffer | the target string buffer to append the formatted number to. | 
| position | on input: an optional alignment field; on output: the offsets of the alignment field in the formatted text. | 
Formats the specified object using the rules of this decimal format and returns an AttributedCharacterIterator with the formatted number and attributes.
| object | the object to format. | 
|---|
| IllegalArgumentException | if objectcannot be formatted by this format. | 
|---|---|
| NullPointerException | if objectisnull. | 
Returns the currency used by this decimal format.
Returns the DecimalFormatSymbols used by this decimal format.
DecimalFormatSymbols used by this decimal format. Returns the number of digits grouped together by the grouping separator. This only allows to get the primary grouping size. There is no API to get the secondary grouping size.
Returns the multiplier which is applied to the number before formatting or after parsing.
Returns the prefix which is formatted or parsed before a negative number.
Returns the suffix which is formatted or parsed after a negative number.
Returns the prefix which is formatted or parsed before a positive number.
Returns the suffix which is formatted or parsed after a positive number.
Returns the RoundingMode used by this NumberFormat.
Returns an integer hash code for this object. By contract, any two objects for which equals(Object) returns true must return the same hash code value. This means that subclasses of Object usually override both methods or neither method. 
Note that hash values must not change over time unless information used in equals comparisons also changes.
See Writing a correct hashCode method if you intend implementing your own hashCode method.
Indicates whether the decimal separator is shown when there are no fractional digits.
true if the decimal separator should always be formatted; false otherwise. Indicates whether grouping will be used in this format.
true if grouping is used; false otherwise. This value indicates whether the return object of the parse operation is of type BigDecimal. This value defaults to false.
true if parse always returns BigDecimals, false if the type of the result is Long or Double. Indicates whether parsing with this decimal format will only return numbers of type java.lang.Integer.
true if this DecimalFormat's parse method only returns java.lang.Integer; false otherwise. Parses a Long or Double from the specified string starting at the index specified by position. If the string is successfully parsed then the index of the ParsePosition is updated to the index following the parsed text. On error, the index is unchanged and the error index of ParsePosition is set to the index where the error occurred.
| string | the string to parse. | 
|---|---|
| position | input/output parameter, specifies the start index in stringfrom where to start parsing. If parsing is successful, it is updated with the index following the parsed text; on error, the index is unchanged and the error index is set to the index where the error occurred. | 
Long or Double resulting from the parse or null if there is an error. The result will be a Long if the parsed number is an integer in the range of a long, otherwise the result is a Double. If isParseBigDecimal is true then it returns the result as a BigDecimal. Sets the currency used by this decimal format. The min and max fraction digits remain the same.
| currency | the currency this DecimalFormatshould use. | 
|---|
Sets the DecimalFormatSymbols used by this decimal format.
| value | the DecimalFormatSymbolsto set. | 
|---|
Sets whether the decimal separator is shown when there are no fractional digits.
| value | trueif the decimal separator should always be formatted;falseotherwise. | 
|---|
Sets the number of digits grouped together by the grouping separator. This only allows to set the primary grouping size; the secondary grouping size can only be set with a pattern.
| value | the number of digits grouped together. | 
|---|
Sets whether or not grouping will be used in this format. Grouping affects both parsing and formatting.
| value | trueif grouping is used;falseotherwise. | 
|---|
Sets the maximum number of digits after the decimal point. If the value passed is negative then it is replaced by 0. Regardless of this setting, no more than 340 digits will be used.
| value | the maximum number of fraction digits. | 
|---|
Sets the maximum number of digits before the decimal point. If the value passed is negative then it is replaced by 0. Regardless of this setting, no more than 309 digits will be used.
| value | the maximum number of integer digits. | 
|---|
Sets the minimum number of digits after the decimal point. If the value passed is negative then it is replaced by 0. Regardless of this setting, no more than 340 digits will be used.
| value | the minimum number of fraction digits. | 
|---|
Sets the minimum number of digits before the decimal point. If the value passed is negative then it is replaced by 0. Regardless of this setting, no more than 309 digits will be used.
| value | the minimum number of integer digits. | 
|---|
Sets the multiplier which is applied to the number before formatting or after parsing.
| value | the multiplier. | 
|---|
Sets the prefix which is formatted or parsed before a negative number.
| value | the negative prefix. | 
|---|
Sets the suffix which is formatted or parsed after a negative number.
| value | the negative suffix. | 
|---|
Sets the behavior of the parse method. If set to true then all the returned objects will be of type BigDecimal.
| newValue | trueif all the returned objects should be of typeBigDecimal;falseotherwise. | 
|---|
Sets the flag that indicates whether numbers will be parsed as integers. When this decimal format is used for parsing and this value is set to true, then the resulting numbers will be of type java.lang.Integer. Special cases are NaN, positive and negative infinity, which are still returned as java.lang.Double.
| value | truethat the resulting numbers of parse operations will be of typejava.lang.Integerexcept for the special cases described above. | 
|---|
Sets the prefix which is formatted or parsed before a positive number.
| value | the positive prefix. | 
|---|
Sets the suffix which is formatted or parsed after a positive number.
| value | the positive suffix. | 
|---|
Sets the RoundingMode used by this NumberFormat.
Returns the pattern of this decimal format using localized pattern characters.
Returns the pattern of this decimal format using non-localized pattern characters.