Class DecimalFormat
- All Implemented Interfaces:
Serializable, Cloneable
Formats and parses decimal numbers according to a pattern.
Pattern syntax
A pattern is a positive subpattern, optionally followed by ; and a
negative subpattern of which only the prefix and suffix are used. Each
subpattern is a prefix, a number and a suffix. In the number:
0is a digit that is always written,#a digit written only when it is significant..is the decimal separator and,the grouping separator; the distance from the last,to the end of the integer part is the group size.Efollowed by one or more0selects scientific notation, with at least that many exponent digits. With more integer digit positions than0s among them (##0.###E0), the exponent is kept a multiple of the number of integer positions.
In a prefix or suffix, % multiplies the number by 100 and writes a
percent sign, the per mille sign multiplies by 1000, the currency sign
writes the currency symbol (doubled, the international currency code), and
- writes the minus sign. A single quote makes the characters up to the
next one literal, and two in a row stand for one quote.
The characters actually written -- separators, minus, percent, currency
-- come from the format's DecimalFormatSymbols.
Rounding
Rounding is half-even, the JDK default, and like the JDK it is decided by
the exact binary value of a double: 0.125 is a true tie and formats as
0.12 under 0.00, while 0.15, which as a double lies just below the
decimal 0.15, formats as 0.1 under 0.0.
The JDK departs from half-even in two places, and so does this class,
because a last digit that differs from the desktop's is worse than either
answer: a whole number rounds a tie up in scientific notation (12345
under 0.###E0 is 1.235E4), and 5E-4, 5E-5 and so on round down
when the 5 is the first digit dropped (0.0005 under 0.000 is 0.000).
Differences from the JDK
- No
setRoundingMode,setCurrency,setParseBigDecimalorformatToCharacterIterator: the device has none of the types they name. - No localized patterns (
applyLocalizedPattern,toLocalizedPattern).
- See Also:
-
Field Summary
Fields inherited from class NumberFormat
FRACTION_FIELD, INTEGER_FIELD -
Constructor Summary
ConstructorsConstructorDescriptionDecimalFormat(String pattern) DecimalFormat(String pattern, DecimalFormatSymbols symbols) -
Method Summary
Modifier and TypeMethodDescriptionvoidapplyPattern(String pattern) clone()A copy of this format.booleanIndicates whether some other object is "equal to" this one.format(double number, StringBuffer result, FieldPosition fieldPosition) format(long number, StringBuffer result, FieldPosition fieldPosition) A copy of the symbols in use; changing it changes nothing until it is passed tosetDecimalFormatSymbols(DecimalFormatSymbols).intintinthashCode()Returns a hash code value for the object.booleanparse(String text, ParsePosition pos) Parses a number starting atparsePosition, which is advanced past what was read.voidsetDecimalFormatSymbols(DecimalFormatSymbols newSymbols) voidsetDecimalSeparatorAlwaysShown(boolean newValue) voidsetGroupingSize(int newValue) voidsetMultiplier(int newValue) voidsetNegativePrefix(String newValue) voidsetNegativeSuffix(String newValue) voidsetPositivePrefix(String newValue) voidsetPositiveSuffix(String newValue) A pattern that produces this format.Methods inherited from class NumberFormat
format, format, format, getCurrencyInstance, getCurrencyInstance, getInstance, getInstance, getIntegerInstance, getIntegerInstance, getMaximumFractionDigits, getMaximumIntegerDigits, getMinimumFractionDigits, getMinimumIntegerDigits, getNumberInstance, getNumberInstance, getPercentInstance, getPercentInstance, isGroupingUsed, isParseIntegerOnly, parse, parseObject, setGroupingUsed, setMaximumFractionDigits, setMaximumIntegerDigits, setMinimumFractionDigits, setMinimumIntegerDigits, setParseIntegerOnlyMethods inherited from class Format
format, parseObject
-
Constructor Details
-
DecimalFormat
public DecimalFormat() -
DecimalFormat
-
DecimalFormat
-
-
Method Details
-
format
- Specified by:
formatin classNumberFormat
-
format
- Specified by:
formatin classNumberFormat
-
parse
Description copied from class:NumberFormatParses a number starting atparsePosition, which is advanced past what was read. On failure the position is left alone, its error index is set, andnullis returned. The result is aLongwhen the text is a whole number that fits one, and aDoubleotherwise.- Specified by:
parsein classNumberFormat
-
applyPattern
-
toPattern
A pattern that produces this format. It is equivalent to the pattern that was applied, not necessarily the same text:0.00comes back as#0.00. -
getDecimalFormatSymbols
A copy of the symbols in use; changing it changes nothing until it is passed tosetDecimalFormatSymbols(DecimalFormatSymbols). -
setDecimalFormatSymbols
-
getPositivePrefix
-
setPositivePrefix
-
getNegativePrefix
-
setNegativePrefix
-
getPositiveSuffix
-
setPositiveSuffix
-
getNegativeSuffix
-
setNegativeSuffix
-
getMultiplier
public int getMultiplier() -
setMultiplier
public void setMultiplier(int newValue) -
getGroupingSize
public int getGroupingSize() -
setGroupingSize
public void setGroupingSize(int newValue) -
isDecimalSeparatorAlwaysShown
public boolean isDecimalSeparatorAlwaysShown() -
setDecimalSeparatorAlwaysShown
public void setDecimalSeparatorAlwaysShown(boolean newValue) -
clone
A copy of this format. Written out field by field:Object.clone()answersnullon the device for anything but an array.- Specified by:
clonein classNumberFormat
-
equals
Description copied from class:ObjectIndicates whether some other object is "equal to" this one. The equals method implements an equivalence relation: It is reflexive: for any reference value x, x.equals(x) should return true. It is symmetric: for any reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true. It is transitive: for any reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true. It is consistent: for any reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the object is modified. For any non-null reference value x, x.equals(null) should return false. The equals method for class Object implements the most discriminating possible equivalence relation on objects; that is, for any reference values x and y, this method returns true if and only if x and y refer to the same object (x==y has the value true).- Overrides:
equalsin classNumberFormat
-
hashCode
public int hashCode()Description copied from class:ObjectReturns a hash code value for the object. This method is supported for the benefit of hashtables such as those provided by java.util.Hashtable. The general contract of hashCode is: Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application. If two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result. It is not required that if two objects are unequal according to the equals(java.lang.Object) method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hashtables. As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the JavaTM programming language.)- Overrides:
hashCodein classNumberFormat
-