ICU 77.1  77.1
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
decimfmt.h
Go to the documentation of this file.
1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /*
4 ********************************************************************************
5 * Copyright (C) 1997-2016, International Business Machines
6 * Corporation and others. All Rights Reserved.
7 ********************************************************************************
8 *
9 * File DECIMFMT.H
10 *
11 * Modification History:
12 *
13 * Date Name Description
14 * 02/19/97 aliu Converted from java.
15 * 03/20/97 clhuang Updated per C++ implementation.
16 * 04/03/97 aliu Rewrote parsing and formatting completely, and
17 * cleaned up and debugged. Actually works now.
18 * 04/17/97 aliu Changed DigitCount to int per code review.
19 * 07/10/97 helena Made ParsePosition a class and get rid of the function
20 * hiding problems.
21 * 09/09/97 aliu Ported over support for exponential formats.
22 * 07/20/98 stephen Changed documentation
23 * 01/30/13 emmons Added Scaling methods
24 ********************************************************************************
25 */
26 
27 #ifndef DECIMFMT_H
28 #define DECIMFMT_H
29 
30 #include "unicode/utypes.h"
31 
32 #if U_SHOW_CPLUSPLUS_API
33 
39 #if !UCONFIG_NO_FORMATTING
40 
41 #include "unicode/dcfmtsym.h"
42 #include "unicode/numfmt.h"
43 #include "unicode/locid.h"
44 #include "unicode/fpositer.h"
45 #include "unicode/stringpiece.h"
46 #include "unicode/curramt.h"
47 #include "unicode/enumset.h"
48 
49 U_NAMESPACE_BEGIN
50 
51 class CurrencyPluralInfo;
52 class CompactDecimalFormat;
53 
54 namespace number {
55 class LocalizedNumberFormatter;
56 namespace impl {
57 class DecimalQuantity;
58 struct DecimalFormatFields;
59 class UFormattedNumberData;
60 }
61 }
62 
63 namespace numparse::impl {
64 class NumberParserImpl;
65 }
66 
667  public:
673  kPadBeforePrefix, kPadAfterPrefix, kPadBeforeSuffix, kPadAfterSuffix
674  };
675 
693 
711  DecimalFormat(const UnicodeString& pattern, UErrorCode& status);
712 
734  DecimalFormat(const UnicodeString& pattern, DecimalFormatSymbols* symbolsToAdopt, UErrorCode& status);
735 
736 #ifndef U_HIDE_INTERNAL_API
737 
750  DecimalFormat(const UnicodeString& pattern, DecimalFormatSymbols* symbolsToAdopt,
751  UNumberFormatStyle style, UErrorCode& status);
752 
753 #if UCONFIG_HAVE_PARSEALLINPUT
754 
758  void setParseAllInput(UNumberFormatAttributeValue value);
759 
760 #endif
761 
762 #endif /* U_HIDE_INTERNAL_API */
763 
764  private:
765 
770  DecimalFormat(const DecimalFormatSymbols* symbolsToAdopt, UErrorCode& status);
771 
772  public:
773 
784  virtual DecimalFormat& setAttribute(UNumberFormatAttribute attr, int32_t newValue, UErrorCode& status);
785 
795  virtual int32_t getAttribute(UNumberFormatAttribute attr, UErrorCode& status) const;
796 
797 
804  void setGroupingUsed(UBool newValue) override;
805 
813  void setParseIntegerOnly(UBool value) override;
814 
822  void setLenient(UBool enable) override;
823 
846  DecimalFormat(const UnicodeString& pattern, DecimalFormatSymbols* symbolsToAdopt,
847  UParseError& parseError, UErrorCode& status);
848 
869  DecimalFormat(const UnicodeString& pattern, const DecimalFormatSymbols& symbols, UErrorCode& status);
870 
877  DecimalFormat(const DecimalFormat& source);
878 
886 
891  ~DecimalFormat() override;
892 
900  DecimalFormat* clone() const override;
901 
910  bool operator==(const Format& other) const override;
911 
912 
913  using NumberFormat::format;
914 
926  UnicodeString& format(double number, UnicodeString& appendTo, FieldPosition& pos) const override;
927 
928 #ifndef U_HIDE_INTERNAL_API
941  UnicodeString& format(double number, UnicodeString& appendTo, FieldPosition& pos,
942  UErrorCode& status) const override;
943 #endif /* U_HIDE_INTERNAL_API */
944 
958  UnicodeString& format(double number, UnicodeString& appendTo, FieldPositionIterator* posIter,
959  UErrorCode& status) const override;
960 
972  UnicodeString& format(int32_t number, UnicodeString& appendTo, FieldPosition& pos) const override;
973 
974 #ifndef U_HIDE_INTERNAL_API
987  UnicodeString& format(int32_t number, UnicodeString& appendTo, FieldPosition& pos,
988  UErrorCode& status) const override;
989 #endif /* U_HIDE_INTERNAL_API */
990 
1004  UnicodeString& format(int32_t number, UnicodeString& appendTo, FieldPositionIterator* posIter,
1005  UErrorCode& status) const override;
1006 
1018  UnicodeString& format(int64_t number, UnicodeString& appendTo, FieldPosition& pos) const override;
1019 
1020 #ifndef U_HIDE_INTERNAL_API
1033  UnicodeString& format(int64_t number, UnicodeString& appendTo, FieldPosition& pos,
1034  UErrorCode& status) const override;
1035 #endif /* U_HIDE_INTERNAL_API */
1036 
1050  UnicodeString& format(int64_t number, UnicodeString& appendTo, FieldPositionIterator* posIter,
1051  UErrorCode& status) const override;
1052 
1070  UErrorCode& status) const override;
1071 
1072 #ifndef U_HIDE_INTERNAL_API
1073 
1089  UnicodeString& format(const number::impl::DecimalQuantity& number, UnicodeString& appendTo,
1090  FieldPositionIterator* posIter, UErrorCode& status) const override;
1091 
1107  UnicodeString& format(const number::impl::DecimalQuantity& number, UnicodeString& appendTo,
1108  FieldPosition& pos, UErrorCode& status) const override;
1109 
1110 #endif // U_HIDE_INTERNAL_API
1111 
1112  using NumberFormat::parse;
1113 
1133  void parse(const UnicodeString& text, Formattable& result,
1134  ParsePosition& parsePosition) const override;
1135 
1155  CurrencyAmount* parseCurrency(const UnicodeString& text, ParsePosition& pos) const override;
1156 
1165 
1172  virtual void adoptDecimalFormatSymbols(DecimalFormatSymbols* symbolsToAdopt);
1173 
1180  virtual void setDecimalFormatSymbols(const DecimalFormatSymbols& symbols);
1181 
1182 
1190 
1198 
1205  virtual void setCurrencyPluralInfo(const CurrencyPluralInfo& info);
1206 
1207 
1217 
1225  virtual void setPositivePrefix(const UnicodeString& newValue);
1226 
1236 
1244  virtual void setNegativePrefix(const UnicodeString& newValue);
1245 
1255 
1263  virtual void setPositiveSuffix(const UnicodeString& newValue);
1264 
1274 
1282  virtual void setNegativeSuffix(const UnicodeString& newValue);
1283 
1293 
1303 
1316  int32_t getMultiplier() const;
1317 
1331  virtual void setMultiplier(int32_t newValue);
1332 
1345  int32_t getMultiplierScale() const;
1346 
1366  void setMultiplierScale(int32_t newValue);
1367 
1377  virtual double getRoundingIncrement() const;
1378 
1390  virtual void setRoundingIncrement(double newValue);
1391 
1400  virtual ERoundingMode getRoundingMode() const override;
1401 
1410  virtual void setRoundingMode(ERoundingMode roundingMode) override;
1411 
1423  virtual int32_t getFormatWidth() const;
1424 
1439  virtual void setFormatWidth(int32_t width);
1440 
1454 
1469  virtual void setPadCharacter(const UnicodeString& padChar);
1470 
1486  virtual EPadPosition getPadPosition() const;
1487 
1504  virtual void setPadPosition(EPadPosition padPos);
1505 
1516  virtual UBool isScientificNotation() const;
1517 
1533  virtual void setScientificNotation(UBool useScientific);
1534 
1545  virtual int8_t getMinimumExponentDigits() const;
1546 
1559  virtual void setMinimumExponentDigits(int8_t minExpDig);
1560 
1574 
1588  virtual void setExponentSignAlwaysShown(UBool expSignAlways);
1589 
1601  int32_t getGroupingSize() const;
1602 
1614  virtual void setGroupingSize(int32_t newValue);
1615 
1634  int32_t getSecondaryGroupingSize() const;
1635 
1647  virtual void setSecondaryGroupingSize(int32_t newValue);
1648 
1672  int32_t getMinimumGroupingDigits() const;
1673 
1691  void setMinimumGroupingDigits(int32_t newValue);
1692 
1702 
1711  virtual void setDecimalSeparatorAlwaysShown(UBool newValue);
1712 
1720 
1730  virtual void setDecimalPatternMatchRequired(UBool newValue);
1731 
1740 
1750 
1759 
1772 
1782 
1791 
1802  virtual UnicodeString& toPattern(UnicodeString& result) const;
1803 
1815 
1845  virtual void applyPattern(const UnicodeString& pattern, UParseError& parseError, UErrorCode& status);
1846 
1855  virtual void applyPattern(const UnicodeString& pattern, UErrorCode& status);
1856 
1887  virtual void applyLocalizedPattern(const UnicodeString& pattern, UParseError& parseError,
1888  UErrorCode& status);
1889 
1899  virtual void applyLocalizedPattern(const UnicodeString& pattern, UErrorCode& status);
1900 
1901 
1911  void setMaximumIntegerDigits(int32_t newValue) override;
1912 
1922  void setMinimumIntegerDigits(int32_t newValue) override;
1923 
1933  void setMaximumFractionDigits(int32_t newValue) override;
1934 
1944  void setMinimumFractionDigits(int32_t newValue) override;
1945 
1954 
1963 
1975  void setMinimumSignificantDigits(int32_t min);
1976 
1988  void setMaximumSignificantDigits(int32_t max);
1989 
1997 
2005  void setSignificantDigitsUsed(UBool useSignificantDigits);
2006 
2019  void setCurrency(const char16_t* theCurrency, UErrorCode& ec) override;
2020 
2021 #ifndef U_FORCE_HIDE_DEPRECATED_API
2027  virtual void setCurrency(const char16_t* theCurrency);
2028 #endif // U_FORCE_HIDE_DEPRECATED_API
2029 
2039 
2045 
2046 #ifndef U_HIDE_INTERNAL_API
2047 
2053  void formatToDecimalQuantity(double number, number::impl::DecimalQuantity& output,
2054  UErrorCode& status) const;
2055 
2062  void formatToDecimalQuantity(const Formattable& number, number::impl::DecimalQuantity& output,
2063  UErrorCode& status) const;
2064 
2065 #endif /* U_HIDE_INTERNAL_API */
2066 
2113 
2125  static UClassID U_EXPORT2 getStaticClassID();
2126 
2138  UClassID getDynamicClassID() const override;
2139 
2140  private:
2141 
2143  void touch(UErrorCode& status);
2144 
2146  void touchNoError();
2147 
2159  void setPropertiesFromPattern(const UnicodeString& pattern, int32_t ignoreRounding,
2160  UErrorCode& status);
2161 
2162  const numparse::impl::NumberParserImpl* getParser(UErrorCode& status) const;
2163 
2164  const numparse::impl::NumberParserImpl* getCurrencyParser(UErrorCode& status) const;
2165 
2166  static void fieldPositionHelper(
2167  const number::impl::UFormattedNumberData& formatted,
2168  FieldPosition& fieldPosition,
2169  int32_t offset,
2170  UErrorCode& status);
2171 
2172  static void fieldPositionIteratorHelper(
2173  const number::impl::UFormattedNumberData& formatted,
2174  FieldPositionIterator* fpi,
2175  int32_t offset,
2176  UErrorCode& status);
2177 
2178  void setupFastFormat();
2179 
2180  bool fastFormatDouble(double input, UnicodeString& output) const;
2181 
2182  bool fastFormatInt64(int64_t input, UnicodeString& output) const;
2183 
2184  void doFastFormatInt32(int32_t input, bool isNegative, UnicodeString& output) const;
2185 
2186  //=====================================================================================//
2187  // INSTANCE FIELDS //
2188  //=====================================================================================//
2189 
2190 
2191  // One instance field for the implementation, keep all fields inside of an implementation
2192  // class defined in number_mapper.h
2193  number::impl::DecimalFormatFields* fields = nullptr;
2194 
2195  // Allow child class CompactDecimalFormat to access fProperties:
2196  friend class CompactDecimalFormat;
2197 
2198  // Allow MeasureFormat to use fieldPositionHelper:
2199  friend class MeasureFormat;
2200 
2201 };
2202 
2203 U_NAMESPACE_END
2204 
2205 #endif /* #if !UCONFIG_NO_FORMATTING */
2206 
2207 #endif /* U_SHOW_CPLUSPLUS_API */
2208 
2209 #endif // _DECIMFMT
2210 //eof
IMPORTANT: New users are strongly encouraged to see if numberformatter.h fits their use case.
A currency together with a numeric amount, such as 200 USD.
Definition: curramt.h:39
This class represents the information needed by DecimalFormat to format currency plural,...
Definition: currpinf.h:48
This class represents the set of symbols needed by DecimalFormat to format numbers.
Definition: dcfmtsym.h:87
IMPORTANT: New users are strongly encouraged to see if numberformatter.h fits their use case.
Definition: decimfmt.h:666
UBool isDecimalSeparatorAlwaysShown() const
Allows you to get the behavior of the decimal separator with integers.
void setMinimumSignificantDigits(int32_t min)
Sets the minimum number of significant digits that will be displayed.
void setParseCaseSensitive(UBool value)
Whether to pay attention to case when parsing; default is to ignore case (perform case-folding).
DecimalFormat(UErrorCode &status)
Create a DecimalFormat using the default pattern and symbols for the default locale.
virtual void setSecondaryGroupingSize(int32_t newValue)
Set the secondary grouping size.
int32_t getMaximumSignificantDigits() const
Returns the maximum number of significant digits that will be displayed.
virtual void setDecimalPatternMatchRequired(UBool newValue)
Allows you to set the parse behavior of the pattern decimal mark.
void setMaximumIntegerDigits(int32_t newValue) override
Sets the maximum number of digits allowed in the integer portion of a number.
~DecimalFormat() override
Destructor.
virtual void applyLocalizedPattern(const UnicodeString &pattern, UErrorCode &status)
Apply the given pattern to this Format object.
virtual void setPositivePrefix(const UnicodeString &newValue)
Set the positive prefix.
virtual void setDecimalSeparatorAlwaysShown(UBool newValue)
Allows you to set the behavior of the decimal separator with integers.
virtual void applyPattern(const UnicodeString &pattern, UParseError &parseError, UErrorCode &status)
Apply the given pattern to this Format object.
int32_t getGroupingSize() const
Return the grouping size.
UBool isFormatFailIfMoreThanMaxDigits() const
Returns whether truncation of high-order integer digits should result in an error.
virtual EPadPosition getPadPosition() const
Get the position at which padding will take place.
UnicodeString & getPositiveSuffix(UnicodeString &result) const
Get the positive suffix.
bool operator==(const Format &other) const override
Return true if the given Format objects are semantically equal.
void setSignificantDigitsUsed(UBool useSignificantDigits)
Sets whether significant digits are in use, or integer and fraction digit counts are in use.
virtual double getRoundingIncrement() const
Get the rounding increment.
void setParseNoExponent(UBool value)
Specifies whether to stop parsing when an exponent separator is encountered.
int32_t getMinimumSignificantDigits() const
Returns the minimum number of significant digits that will be displayed.
UnicodeString & format(double number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const override
Format a double or long number using base-10 representation.
UnicodeString & format(int32_t number, UnicodeString &appendTo, FieldPosition &pos) const override
Format a long number using base-10 representation.
UnicodeString & format(double number, UnicodeString &appendTo, FieldPosition &pos) const override
Format a double or long number using base-10 representation.
UnicodeString & format(int64_t number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const override
Format an int64 number using base-10 representation.
int32_t getMultiplier() const
Get the multiplier for use in percent, permill, etc.
UClassID getDynamicClassID() const override
Returns a unique class ID POLYMORPHICALLY.
UnicodeString & format(int64_t number, UnicodeString &appendTo, FieldPosition &pos) const override
Format an int64 number using base-10 representation.
virtual void setPadPosition(EPadPosition padPos)
Set the position at which padding will take place.
virtual void setNegativePrefix(const UnicodeString &newValue)
Set the negative prefix.
virtual void setRoundingIncrement(double newValue)
Set the rounding increment.
virtual void setCurrencyPluralInfo(const CurrencyPluralInfo &info)
Sets the currency plural format information, which is generally not changed by the programmer or user...
virtual const DecimalFormatSymbols * getDecimalFormatSymbols() const
Returns the decimal format symbols, which is generally not changed by the programmer or user.
virtual void setDecimalFormatSymbols(const DecimalFormatSymbols &symbols)
Sets the decimal format symbols, which is generally not changed by the programmer or user.
void setMinimumGroupingDigits(int32_t newValue)
Sets the minimum grouping digits.
static UClassID getStaticClassID()
Return the class ID for this class.
DecimalFormat(const UnicodeString &pattern, DecimalFormatSymbols *symbolsToAdopt, UErrorCode &status)
Create a DecimalFormat from the given pattern and symbols.
virtual int8_t getMinimumExponentDigits() const
Return the minimum exponent digits that will be shown.
virtual void setCurrency(const char16_t *theCurrency)
Sets the currency used to display currency amounts.
virtual DecimalFormat & setAttribute(UNumberFormatAttribute attr, int32_t newValue, UErrorCode &status)
Set an integer attribute on this DecimalFormat.
virtual UnicodeString & toPattern(UnicodeString &result) const
Synthesizes a pattern string that represents the current state of this Format object.
int32_t getMinimumGroupingDigits() const
Returns the minimum number of grouping digits.
void setMinimumFractionDigits(int32_t newValue) override
Sets the minimum number of digits allowed in the fraction portion of a number.
void setMaximumSignificantDigits(int32_t max)
Sets the maximum number of significant digits that will be displayed.
virtual void setFormatWidth(int32_t width)
Set the width to which the output of format() is padded.
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.
void setSignAlwaysShown(UBool value)
Set whether to show the plus sign on positive (non-negative) numbers; for example,...
DecimalFormat * clone() const override
Clone this Format object polymorphically.
virtual UnicodeString & toLocalizedPattern(UnicodeString &result) const
Synthesizes a localized pattern string that represents the current state of this Format object.
int32_t getMultiplierScale() const
Gets the power of ten by which number should be multiplied before formatting, which can be combined w...
virtual void setExponentSignAlwaysShown(UBool expSignAlways)
Set whether the exponent sign is always shown.
UCurrencyUsage getCurrencyUsage() const
Returns the Currency Usage object used to display currency.
UnicodeString & format(const number::impl::DecimalQuantity &number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const override
Format a decimal number.
virtual UBool isScientificNotation() const
Return whether or not scientific notation is used.
void setGroupingUsed(UBool newValue) override
Set whether or not grouping will be used in this format.
DecimalFormat(const UnicodeString &pattern, UErrorCode &status)
Create a DecimalFormat from the given pattern and the symbols for the default locale.
UBool isParseCaseSensitive() const
Returns whether parsing is sensitive to case (lowercase/uppercase).
void setMaximumFractionDigits(int32_t newValue) override
Sets the maximum number of digits allowed in the fraction portion of a number.
virtual void setNegativeSuffix(const UnicodeString &newValue)
Set the negative suffix.
virtual int32_t getFormatWidth() const
Get the width to which the output of format() is padded.
UnicodeString & getNegativePrefix(UnicodeString &result) const
Get the negative prefix.
virtual void setScientificNotation(UBool useScientific)
Set whether or not scientific notation is used.
DecimalFormat(const DecimalFormat &source)
Copy constructor.
void formatToDecimalQuantity(double number, number::impl::DecimalQuantity &output, UErrorCode &status) const
Format a number and save it into the given DecimalQuantity.
UBool isSignAlwaysShown() const
Whether to show the plus sign on positive (non-negative) numbers; for example, "+12".
UnicodeString & format(StringPiece number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const override
Format a decimal number.
void setFormatFailIfMoreThanMaxDigits(UBool value)
Sets whether truncation of high-order integer digits should result in an error.
virtual void setPositiveSuffix(const UnicodeString &newValue)
Set the positive suffix.
const number::LocalizedNumberFormatter * toNumberFormatter(UErrorCode &status) const
Converts this DecimalFormat to a (Localized)NumberFormatter.
virtual void setGroupingSize(int32_t newValue)
Set the grouping size.
UnicodeString & getPositivePrefix(UnicodeString &result) const
Get the positive prefix.
UnicodeString & format(int32_t number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const override
Format a long number using base-10 representation.
UnicodeString & format(int64_t number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const override
Format an int64 number using base-10 representation.
UBool areSignificantDigitsUsed() const
Returns true if significant digits are in use, or false if integer and fraction digit counts are in u...
void setMultiplierScale(int32_t newValue)
Sets a power of ten by which number should be multiplied before formatting, which can be combined wit...
DecimalFormat(const UnicodeString &pattern, DecimalFormatSymbols *symbolsToAdopt, UParseError &parseError, UErrorCode &status)
Create a DecimalFormat from the given pattern and symbols.
UnicodeString & format(double number, UnicodeString &appendTo, FieldPositionIterator *posIter, UErrorCode &status) const override
Format a double or long number using base-10 representation.
virtual void setMinimumExponentDigits(int8_t minExpDig)
Set the minimum exponent digits that will be shown.
virtual void applyPattern(const UnicodeString &pattern, UErrorCode &status)
Sets the pattern.
virtual ERoundingMode getRoundingMode() const override
Get the rounding mode.
void setLenient(UBool enable) override
Sets whether lenient parsing should be enabled (it is off by default).
void setCurrencyUsage(UCurrencyUsage newUsage, UErrorCode *ec)
Sets the Currency Usage object used to display currency.
UBool isDecimalPatternMatchRequired() const
Allows you to get the parse behavior of the pattern decimal mark.
void setCurrency(const char16_t *theCurrency, UErrorCode &ec) override
Sets the currency used to display currency amounts.
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 attribu...
void setMinimumIntegerDigits(int32_t newValue) override
Sets the minimum number of digits allowed in the integer portion of a number.
UnicodeString & getNegativeSuffix(UnicodeString &result) const
Get the negative suffix.
virtual void adoptDecimalFormatSymbols(DecimalFormatSymbols *symbolsToAdopt)
Sets the decimal format symbols, which is generally not changed by the programmer or user.
virtual UnicodeString getPadCharacterString() const
Get the pad character used to pad to the format width.
DecimalFormat & operator=(const DecimalFormat &rhs)
Assignment operator.
virtual void setMultiplier(int32_t newValue)
Set the multiplier for use in percent, permill, etc.
virtual void applyLocalizedPattern(const UnicodeString &pattern, UParseError &parseError, UErrorCode &status)
Apply the given pattern to this Format object.
EPadPosition
Pad position.
Definition: decimfmt.h:672
virtual const CurrencyPluralInfo * getCurrencyPluralInfo() const
Returns the currency plural format information, which is generally not changed by the programmer or u...
CurrencyAmount * parseCurrency(const UnicodeString &text, ParsePosition &pos) const override
Parses text from the given string as a currency amount.
int32_t getSecondaryGroupingSize() const
Return the secondary grouping size.
UBool isParseNoExponent() const
Returns whether to ignore exponents when parsing.
void setParseIntegerOnly(UBool value) override
Sets whether or not numbers should be parsed as integers only.
virtual void adoptCurrencyPluralInfo(CurrencyPluralInfo *toAdopt)
Sets the currency plural format information, which is generally not changed by the programmer or user...
UnicodeString & format(int32_t number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const override
Format a long number using base-10 representation.
UnicodeString & format(const number::impl::DecimalQuantity &number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const override
Format a decimal number.
virtual UBool isExponentSignAlwaysShown() const
Return whether the exponent sign is always shown.
virtual void setRoundingMode(ERoundingMode roundingMode) override
Set the rounding mode.
virtual void setPadCharacter(const UnicodeString &padChar)
Set the character used to pad to the format width.
DecimalFormat(const UnicodeString &pattern, const DecimalFormatSymbols &symbols, UErrorCode &status)
Create a DecimalFormat from the given pattern and symbols.
void parse(const UnicodeString &text, Formattable &result, ParsePosition &parsePosition) const override
Parse the given string using this object's choices.
DecimalFormat(const UnicodeString &pattern, DecimalFormatSymbols *symbolsToAdopt, UNumberFormatStyle style, UErrorCode &status)
This API is for ICU use only.
FieldPositionIterator returns the field ids and their start/limit positions generated by a call to Fo...
Definition: fpositer.h:58
FieldPosition is a simple class used by Format and its subclasses to identify fields in formatted out...
Definition: fieldpos.h:110
Base class for all formats.
Definition: format.h:99
Formattable objects can be passed to the Format class or its subclasses for formatting.
Definition: fmtable.h:63
ERoundingMode
Rounding mode.
Definition: numfmt.h:186
virtual void parse(const UnicodeString &text, Formattable &result, ParsePosition &parsePosition) const =0
Return a long if possible (e.g.
UnicodeString & format(const Formattable &obj, UnicodeString &appendTo, UErrorCode &status) const
Formats an object to produce a string.
ParsePosition is a simple class used by Format and its subclasses to keep track of the current positi...
Definition: parsepos.h:52
A string-like object that points to a sized piece of memory.
Definition: stringpiece.h:61
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:296
A NumberFormatter that has a locale associated with it; this means .format() methods are available.
C++ API: Currency Amount Object.
C++ API: Symbols for formatting numbers.
C++: internal template EnumSet<>
C++ API: FieldPosition Iterator.
C++ API: Locale ID object.
C++ API: Compatibility APIs for number formatting.
C++ API: StringPiece: Read-only byte string wrapper class.
A UParseError struct is used to returned detailed information about parsing errors.
Definition: parseerr.h:58
UCurrencyUsage
Currency Usage used for Decimal Format.
Definition: ucurr.h:41
int8_t UBool
The ICU boolean type, a signed-byte integer.
Definition: umachine.h:247
UNumberFormatAttribute
The possible UNumberFormat numeric attributes.
Definition: unum.h:970
UNumberFormatStyle
The possible number format styles.
Definition: unum.h:150
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Definition: uobject.h:96
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
Definition: utypes.h:430
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside.
Definition: utypes.h:316