A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classicu_1_1DecimalFormat.html below:

ICU 77.1: icu::DecimalFormat Class Reference

IMPORTANT: New users are strongly encouraged to see if numberformatter.h fits their use case. More...

  DecimalFormat (UErrorCode &status)   Create a DecimalFormat using the default pattern and symbols for the default locale. More...
    DecimalFormat (const UnicodeString &pattern, UErrorCode &status)   Create a DecimalFormat from the given pattern and the symbols for the default locale. More...
    DecimalFormat (const UnicodeString &pattern, DecimalFormatSymbols *symbolsToAdopt, UErrorCode &status)   Create a DecimalFormat from the given pattern and symbols. More...
    DecimalFormat (const UnicodeString &pattern, DecimalFormatSymbols *symbolsToAdopt, UNumberFormatStyle style, UErrorCode &status)   This API is for ICU use only. More...
  virtual DecimalFormatsetAttribute (UNumberFormatAttribute attr, int32_t newValue, UErrorCode &status)   Set an integer attribute on this DecimalFormat. More...
  virtual int32_t  getAttribute (UNumberFormatAttribute attr, UErrorCode &status) const   Get an integer May return U_UNSUPPORTED_ERROR if this instance does not support the specified attribute. More...
  void  setGroupingUsed (UBool newValue) override   Set whether or not grouping will be used in this format. More...
  void  setParseIntegerOnly (UBool value) override   Sets whether or not numbers should be parsed as integers only. More...
  void  setLenient (UBool enable) override   Sets whether lenient parsing should be enabled (it is off by default). More...
    DecimalFormat (const UnicodeString &pattern, DecimalFormatSymbols *symbolsToAdopt, UParseError &parseError, UErrorCode &status)   Create a DecimalFormat from the given pattern and symbols. More...
    DecimalFormat (const UnicodeString &pattern, const DecimalFormatSymbols &symbols, UErrorCode &status)   Create a DecimalFormat from the given pattern and symbols. More...
    DecimalFormat (const DecimalFormat &source)   Copy constructor. More...
  DecimalFormatoperator= (const DecimalFormat &rhs)   Assignment operator. More...
    ~DecimalFormat () override   Destructor. More...
  DecimalFormatclone () const override   Clone this Format object polymorphically. More...
  bool  operator== (const Format &other) const override   Return true if the given Format objects are semantically equal. More...
  UnicodeStringformat (double number, UnicodeString &appendTo, FieldPosition &pos) const override   Format a double or long number using base-10 representation. More...
  UnicodeStringformat (double number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const override   Format a double or long number using base-10 representation. More...
  UnicodeStringformat (double number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const override   Format a double or long number using base-10 representation. More...
  UnicodeStringformat (int32_t number, UnicodeString &appendTo, FieldPosition &pos) const override   Format a long number using base-10 representation. More...
  UnicodeStringformat (int32_t number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const override   Format a long number using base-10 representation. More...
  UnicodeStringformat (int32_t number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const override   Format a long number using base-10 representation. More...
  UnicodeStringformat (int64_t number, UnicodeString &appendTo, FieldPosition &pos) const override   Format an int64 number using base-10 representation. More...
  UnicodeStringformat (int64_t number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const override   Format an int64 number using base-10 representation. More...
  UnicodeStringformat (int64_t number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const override   Format an int64 number using base-10 representation. More...
  UnicodeStringformat (StringPiece number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const override   Format a decimal number. More...
  UnicodeStringformat (const number::impl::DecimalQuantity &number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const override   Format a decimal number. More...
  UnicodeStringformat (const number::impl::DecimalQuantity &number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const override   Format a decimal number. More...
  void  parse (const UnicodeString &text, Formattable &result, ParsePosition &parsePosition) const override   Parse the given string using this object's choices. More...
  CurrencyAmountparseCurrency (const UnicodeString &text, ParsePosition &pos) const override   Parses text from the given string as a currency amount. More...
  virtual const DecimalFormatSymbolsgetDecimalFormatSymbols () const   Returns the decimal format symbols, which is generally not changed by the programmer or user. More...
  virtual void  adoptDecimalFormatSymbols (DecimalFormatSymbols *symbolsToAdopt)   Sets the decimal format symbols, which is generally not changed by the programmer or user. More...
  virtual void  setDecimalFormatSymbols (const DecimalFormatSymbols &symbols)   Sets the decimal format symbols, which is generally not changed by the programmer or user. More...
  virtual const CurrencyPluralInfogetCurrencyPluralInfo () const   Returns the currency plural format information, which is generally not changed by the programmer or user. More...
  virtual void  adoptCurrencyPluralInfo (CurrencyPluralInfo *toAdopt)   Sets the currency plural format information, which is generally not changed by the programmer or user. More...
  virtual void  setCurrencyPluralInfo (const CurrencyPluralInfo &info)   Sets the currency plural format information, which is generally not changed by the programmer or user. More...
  UnicodeStringgetPositivePrefix (UnicodeString &result) const   Get the positive prefix. More...
  virtual void  setPositivePrefix (const UnicodeString &newValue)   Set the positive prefix. More...
  UnicodeStringgetNegativePrefix (UnicodeString &result) const   Get the negative prefix. More...
  virtual void  setNegativePrefix (const UnicodeString &newValue)   Set the negative prefix. More...
  UnicodeStringgetPositiveSuffix (UnicodeString &result) const   Get the positive suffix. More...
  virtual void  setPositiveSuffix (const UnicodeString &newValue)   Set the positive suffix. More...
  UnicodeStringgetNegativeSuffix (UnicodeString &result) const   Get the negative suffix. More...
  virtual void  setNegativeSuffix (const UnicodeString &newValue)   Set the negative suffix. More...
  UBool  isSignAlwaysShown () const   Whether to show the plus sign on positive (non-negative) numbers; for example, "+12". More...
  void  setSignAlwaysShown (UBool value)   Set whether to show the plus sign on positive (non-negative) numbers; for example, "+12". More...
  int32_t  getMultiplier () const   Get the multiplier for use in percent, permill, etc. More...
  virtual void  setMultiplier (int32_t newValue)   Set the multiplier for use in percent, permill, etc. More...
  int32_t  getMultiplierScale () const   Gets the power of ten by which number should be multiplied before formatting, which can be combined with setMultiplier() to multiply by any arbitrary decimal value. More...
  void  setMultiplierScale (int32_t newValue)   Sets a power of ten by which number should be multiplied before formatting, which can be combined with setMultiplier() to multiply by any arbitrary decimal value. More...
  virtual double  getRoundingIncrement () const   Get the rounding increment. More...
  virtual void  setRoundingIncrement (double newValue)   Set the rounding increment. More...
  virtual ERoundingMode  getRoundingMode () const override   Get the rounding mode. More...
  virtual void  setRoundingMode (ERoundingMode roundingMode) override   Set the rounding mode. More...
  virtual int32_t  getFormatWidth () const   Get the width to which the output of format() is padded. More...
  virtual void  setFormatWidth (int32_t width)   Set the width to which the output of format() is padded. More...
  virtual UnicodeString  getPadCharacterString () const   Get the pad character used to pad to the format width. More...
  virtual void  setPadCharacter (const UnicodeString &padChar)   Set the character used to pad to the format width. More...
  virtual EPadPosition  getPadPosition () const   Get the position at which padding will take place. More...
  virtual void  setPadPosition (EPadPosition padPos)   Set the position at which padding will take place. More...
  virtual UBool  isScientificNotation () const   Return whether or not scientific notation is used. More...
  virtual void  setScientificNotation (UBool useScientific)   Set whether or not scientific notation is used. More...
  virtual int8_t  getMinimumExponentDigits () const   Return the minimum exponent digits that will be shown. More...
  virtual void  setMinimumExponentDigits (int8_t minExpDig)   Set the minimum exponent digits that will be shown. More...
  virtual UBool  isExponentSignAlwaysShown () const   Return whether the exponent sign is always shown. More...
  virtual void  setExponentSignAlwaysShown (UBool expSignAlways)   Set whether the exponent sign is always shown. More...
  int32_t  getGroupingSize () const   Return the grouping size. More...
  virtual void  setGroupingSize (int32_t newValue)   Set the grouping size. More...
  int32_t  getSecondaryGroupingSize () const   Return the secondary grouping size. More...
  virtual void  setSecondaryGroupingSize (int32_t newValue)   Set the secondary grouping size. More...
  int32_t  getMinimumGroupingDigits () const   Returns the minimum number of grouping digits. More...
  void  setMinimumGroupingDigits (int32_t newValue)   Sets the minimum grouping digits. More...
  UBool  isDecimalSeparatorAlwaysShown () const   Allows you to get the behavior of the decimal separator with integers. More...
  virtual void  setDecimalSeparatorAlwaysShown (UBool newValue)   Allows you to set the behavior of the decimal separator with integers. More...
  UBool  isDecimalPatternMatchRequired () const   Allows you to get the parse behavior of the pattern decimal mark. More...
  virtual void  setDecimalPatternMatchRequired (UBool newValue)   Allows you to set the parse behavior of the pattern decimal mark. More...
  UBool  isParseNoExponent () const   Returns whether to ignore exponents when parsing. More...
  void  setParseNoExponent (UBool value)   Specifies whether to stop parsing when an exponent separator is encountered. More...
  UBool  isParseCaseSensitive () const   Returns whether parsing is sensitive to case (lowercase/uppercase). More...
  void  setParseCaseSensitive (UBool value)   Whether to pay attention to case when parsing; default is to ignore case (perform case-folding). More...
  UBool  isFormatFailIfMoreThanMaxDigits () const   Returns whether truncation of high-order integer digits should result in an error. More...
  void  setFormatFailIfMoreThanMaxDigits (UBool value)   Sets whether truncation of high-order integer digits should result in an error. More...
  virtual UnicodeStringtoPattern (UnicodeString &result) const   Synthesizes a pattern string that represents the current state of this Format object. More...
  virtual UnicodeStringtoLocalizedPattern (UnicodeString &result) const   Synthesizes a localized pattern string that represents the current state of this Format object. More...
  virtual void  applyPattern (const UnicodeString &pattern, UParseError &parseError, UErrorCode &status)   Apply the given pattern to this Format object. More...
  virtual void  applyPattern (const UnicodeString &pattern, UErrorCode &status)   Sets the pattern. More...
  virtual void  applyLocalizedPattern (const UnicodeString &pattern, UParseError &parseError, UErrorCode &status)   Apply the given pattern to this Format object. More...
  virtual void  applyLocalizedPattern (const UnicodeString &pattern, UErrorCode &status)   Apply the given pattern to this Format object. More...
  void  setMaximumIntegerDigits (int32_t newValue) override   Sets the maximum number of digits allowed in the integer portion of a number. More...
  void  setMinimumIntegerDigits (int32_t newValue) override   Sets the minimum number of digits allowed in the integer portion of a number. More...
  void  setMaximumFractionDigits (int32_t newValue) override   Sets the maximum number of digits allowed in the fraction portion of a number. More...
  void  setMinimumFractionDigits (int32_t newValue) override   Sets the minimum number of digits allowed in the fraction portion of a number. More...
  int32_t  getMinimumSignificantDigits () const   Returns the minimum number of significant digits that will be displayed. More...
  int32_t  getMaximumSignificantDigits () const   Returns the maximum number of significant digits that will be displayed. More...
  void  setMinimumSignificantDigits (int32_t min)   Sets the minimum number of significant digits that will be displayed. More...
  void  setMaximumSignificantDigits (int32_t max)   Sets the maximum number of significant digits that will be displayed. More...
  UBool  areSignificantDigitsUsed () const   Returns true if significant digits are in use, or false if integer and fraction digit counts are in use. More...
  void  setSignificantDigitsUsed (UBool useSignificantDigits)   Sets whether significant digits are in use, or integer and fraction digit counts are in use. More...
  void  setCurrency (const char16_t *theCurrency, UErrorCode &ec) override   Sets the currency used to display currency amounts. More...
  virtual void  setCurrency (const char16_t *theCurrency)   Sets the currency used to display currency amounts. More...
  void  setCurrencyUsage (UCurrencyUsage newUsage, UErrorCode *ec)   Sets the Currency Usage object used to display currency. More...
  UCurrencyUsage  getCurrencyUsage () const   Returns the Currency Usage object used to display currency. More...
  void  formatToDecimalQuantity (double number, number::impl::DecimalQuantity &output, UErrorCode &status) const   Format a number and save it into the given DecimalQuantity. More...
  void  formatToDecimalQuantity (const Formattable &number, number::impl::DecimalQuantity &output, UErrorCode &status) const   Get a DecimalQuantity corresponding to a formattable as it would be formatted by this DecimalFormat. More...
  const number::LocalizedNumberFormattertoNumberFormatter (UErrorCode &status) const   Converts this DecimalFormat to a (Localized)NumberFormatter. More...
  UClassID  getDynamicClassID () const override   Returns a unique class ID POLYMORPHICALLY. More...
  virtual UnicodeStringformat (const Formattable &obj, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const override   Format an object to produce a string. More...
  virtual UnicodeStringformat (const Formattable &obj, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const override   Format an object to produce a string. More...
  UnicodeStringformat (double number, UnicodeString &appendTo) const   Format a double number. More...
  UnicodeStringformat (int32_t number, UnicodeString &appendTo) const   Format a long number. More...
  UnicodeStringformat (int64_t number, UnicodeString &appendTo) const   Format an int64 number. More...
  virtual UnicodeStringformat (double number, UnicodeString &appendTo, FieldPosition &pos) const=0   Format a double number. More...
  virtual UnicodeStringformat (double number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const   Format a double number. More...
  virtual UnicodeStringformat (double number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const   Format a double number. More...
  virtual UnicodeStringformat (int32_t number, UnicodeString &appendTo, FieldPosition &pos) const=0   Format a long number. More...
  virtual UnicodeStringformat (int32_t number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const   Format a long number. More...
  virtual UnicodeStringformat (int32_t number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const   Format an int32 number. More...
  virtual UnicodeStringformat (int64_t number, UnicodeString &appendTo, FieldPosition &pos) const   Format an int64 number. More...
  virtual UnicodeStringformat (int64_t number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const   Format an int64 number. More...
  virtual UnicodeStringformat (int64_t number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const   Format an int64 number. More...
  virtual UnicodeStringformat (StringPiece number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const   Format a decimal number. More...
  virtual UnicodeStringformat (const number::impl::DecimalQuantity &number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const   Format a decimal number. More...
  virtual UnicodeStringformat (const number::impl::DecimalQuantity &number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const   Format a decimal number. More...
  virtual void  parse (const UnicodeString &text, Formattable &result, ParsePosition &parsePosition) const=0   Return a long if possible (e.g. More...
  virtual void  parse (const UnicodeString &text, Formattable &result, UErrorCode &status) const   Parse a string as a numeric value, and return a Formattable numeric object. More...
  virtual  ~NumberFormat ()   Destructor. More...
  virtual UnicodeStringformat (const Formattable &obj, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const override   Format an object to produce a string. More...
  virtual UnicodeStringformat (const Formattable &obj, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const override   Format an object to produce a string. More...
  virtual void  parseObject (const UnicodeString &source, Formattable &result, ParsePosition &parse_pos) const override   Parse a string to produce an object. More...
  UnicodeStringformat (double number, UnicodeString &appendTo) const   Format a double number. More...
  UnicodeStringformat (int32_t number, UnicodeString &appendTo) const   Format a long number. More...
  UnicodeStringformat (int64_t number, UnicodeString &appendTo) const   Format an int64 number. More...
  virtual void  parse (const UnicodeString &text, Formattable &result, UErrorCode &status) const   Parse a string as a numeric value, and return a Formattable numeric object. More...
  UBool  isParseIntegerOnly () const   Return true if this format will parse numbers as integers only. More...
  virtual UBool  isLenient () const   Returns whether lenient parsing is enabled (it is off by default). More...
  UBool  isGroupingUsed () const   Returns true if grouping is used in this format. More...
  int32_t  getMaximumIntegerDigits () const   Returns the maximum number of digits allowed in the integer portion of a number. More...
  int32_t  getMinimumIntegerDigits () const   Returns the minimum number of digits allowed in the integer portion of a number. More...
  int32_t  getMaximumFractionDigits () const   Returns the maximum number of digits allowed in the fraction portion of a number. More...
  int32_t  getMinimumFractionDigits () const   Returns the minimum number of digits allowed in the fraction portion of a number. More...
  const char16_t *  getCurrency () const   Gets the currency used to display currency amounts. More...
  virtual void  setContext (UDisplayContext value, UErrorCode &status)   Set a particular UDisplayContext value in the formatter, such as UDISPCTX_CAPITALIZATION_FOR_STANDALONE. More...
  virtual UDisplayContext  getContext (UDisplayContextType type, UErrorCode &status) const   Get the formatter's UDisplayContext value for the specified UDisplayContextType, such as UDISPCTX_TYPE_CAPITALIZATION. More...
  UnicodeStringformat (const Formattable &obj, UnicodeString &appendTo, UErrorCode &status) const   Formats an object to produce a string. More...
  virtual UnicodeStringformat (const Formattable &obj, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const=0   Format an object to produce a string. More...
  virtual UnicodeStringformat (const Formattable &obj, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const   Format an object to produce a string. More...
  virtual  ~Format ()   Destructor. More...
  bool  operator!= (const Format &other) const   Return true if the given Format objects are not semantically equal. More...
  UnicodeStringformat (const Formattable &obj, UnicodeString &appendTo, UErrorCode &status) const   Formats an object to produce a string. More...
  void  parseObject (const UnicodeString &source, Formattable &result, UErrorCode &status) const   Parses a string to produce an object. More...
  Locale  getLocale (ULocDataLocaleType type, UErrorCode &status) const   Get the locale for this format object. More...
  const char *  getLocaleID (ULocDataLocaleType type, UErrorCode &status) const   Get the locale for this format object. More...
  virtual  ~UObject ()   Destructor. More...
 

IMPORTANT: New users are strongly encouraged to see if numberformatter.h fits their use case.

Although not deprecated, this header is provided for backwards compatibility only.

DecimalFormat is 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", "USD123", "123 US dollars"). All of these flavors can be easily localized.

To obtain a NumberFormat for a specific locale (including the default locale) call one of NumberFormat's factory methods such as createInstance(). 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.

Example Usage

int32_t locCount;

double myNumber = -1234.56;

UnicodeString countryName;

UnicodeString displayName;

UnicodeString str;

UnicodeString pattern;

Formattable fmtable;

for (int32_t j = 0; j < 3; ++j) {

cout << endl << "FORMAT " << j << endl;

for (int32_t i = 0; i < locCount; ++i) {

if (locales[i].getCountry(countryName).size() == 0) {

continue;

}

switch (j) {

case 0:

case 1:

default:

}

if (form) {

str.remove();

cout << locales[i].getDisplayName(displayName) << ": " << pattern;

cout << " -> " << form->format(myNumber,str) << endl;

form->parse(form->format(myNumber,str), fmtable, success);

delete form;

}

}

}

DecimalFormat(UErrorCode &status)

Create a DecimalFormat using the default pattern and symbols for the default locale.

static NumberFormat * createInstance(UErrorCode &)

Create a default style NumberFormat for the current default locale.

NumberFormat()

Default constructor for subclass use only.

static StringEnumeration * getAvailableLocales()

Return a StringEnumeration over the locales available at the time of the call, including registered l...

static NumberFormat * createPercentInstance(UErrorCode &)

Returns a percentage format for the current default locale.

static NumberFormat * createCurrencyInstance(UErrorCode &)

Returns a currency format for the current default locale.

UErrorCode

Standard ICU4C error code type, a substitute for exceptions.

@ U_ZERO_ERROR

No error, no warning.

Another example use createInstance(style)

Locale* locale = new Locale("en", "US");

double myNumber = 1234.56;

UnicodeString str;

Formattable fmtable;

for (int j=NumberFormat::kNumberStyle;

j<=NumberFormat::kPluralCurrencyStyle;

++j) {

str.remove();

cout << "format result " << form->format(myNumber, str) << endl;

format

->parse(form->format(myNumber, str), fmtable, success);

delete form;

}

virtual UnicodeString & format(const Formattable &obj, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const override

Format an object to produce a string.

Patterns

A DecimalFormat consists of a pattern and a set of symbols. The pattern may be set directly using applyPattern(), 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.

Special Pattern Characters

Many characters in a pattern are taken literally; they are matched during parsing and output unchanged during formatting. Special characters, on the other hand, 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 0 Number Yes Digit 1-9 Number Yes '1' through '9' indicate rounding. @ Number No Significant digit # Number Yes Digit, zero shows as absent . Number Yes Decimal separator or monetary decimal separator - Number Yes Minus sign , Number Yes Grouping separator E Number Yes Separates mantissa and exponent in scientific notation. Need not be quoted in prefix or suffix. + Exponent Yes Prefix positive exponents with localized plus sign. Need not 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 tripled, replaced by currency plural names, for example, "US dollar" or "US dollars" for America. 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 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. That means that "#,##0.0#;(#)" has 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() 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 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 "#,##,###,####" == "###,###,####" == "##,#,###,####".

Illegal patterns, such as "#.#.#" or "#.###,###", will cause DecimalFormat to set a failing UErrorCode.

Pattern BNF

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:

Parsing

DecimalFormat parses all Unicode characters that represent decimal digits, as defined by u_charDigitValue(). 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 output.

During parsing, grouping separators are ignored if in lenient mode; otherwise, if present, they must be in appropriate positions.

For currency parsing, the formatter is able to parse every currency style formats no matter which style the formatter is constructed with. For example, a formatter instance gotten from NumberFormat.getInstance(ULocale, NumberFormat.CURRENCYSTYLE) can parse formats such as "USD1.00" and "3.00 US dollars".

If parse(UnicodeString&,Formattable&,ParsePosition&) fails to parse a string, it leaves the parse position unchanged. The convenience method parse(UnicodeString&,Formattable&,UErrorCode&) indicates parse failure by setting a failing UErrorCode.

Formatting

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.

Scientific Notation

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 need not 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".

Significant Digits

DecimalFormat has two ways of controlling how many digits are shows: (a) significant digits counts, or (b) integer and fraction digit counts. Integer and fraction digit counts are described above. When a formatter is using 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 however many integer and fraction digits are required to display the specified number of significant digits. Examples:

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

Padding

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, and can be localized using DecimalFormatSymbols::setSymbol() with a DecimalFormatSymbols::kPadEscapeSymbol selector. For example, "$*x#,##0.00" formats 123 to "$xx123.00", and 1234 to "$1,234.00".

Rounding

DecimalFormat supports rounding to a specific increment. For example, 1230 rounded to the nearest 50 is 1250. 1.234 rounded to the nearest 0.65 is 1.3. The rounding increment may be specified through the API or in a pattern. To specify a rounding increment in a pattern, include the increment in the pattern itself. "#,#50" specifies a rounding increment of

  1. "#,##0.05" specifies a rounding increment of 0.05.

In the absence of an explicit rounding increment numbers are rounded to their formatted width.

Synchronization

DecimalFormat objects are not synchronized. Multiple threads should not access one formatter concurrently.

Subclassing

User subclasses are not supported. While clients may write subclasses, such code will not necessarily work and will not be guaranteed to work stably from release to release.

Definition at line 666 of file decimfmt.h.


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