* <p><strong>IMPORTANT:</strong> 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.
- * <hr/>
*
* Abstract base class for all number formats. Provides interface for
* formatting and parsing a number. Also provides methods for
kPermillField = UNUM_PERMILL_FIELD,
/** @stable ICU 2.0 */
kSignField = UNUM_SIGN_FIELD,
+#ifndef U_HIDE_DRAFT_API
+ /** @draft ICU 64 */
+ kMeasureUnitField = UNUM_MEASURE_UNIT_FIELD,
+ /** @draft ICU 64 */
+ kCompactField = UNUM_COMPACT_FIELD,
+#endif // U_HIDE_DRAFT_API
/**
* These constants are provided for backwards compatibility only.
UnicodeString& appendTo,
FieldPositionIterator* posIter,
UErrorCode& status) const;
-public:
+
+// Can't use #ifndef U_HIDE_INTERNAL_API because these are virtual methods
+
/**
* Format a decimal number.
- * The number is a DigitList wrapper onto a floating point decimal number.
+ * The number is a DecimalQuantity wrapper onto a floating point decimal number.
* The default implementation in NumberFormat converts the decimal number
* to a double and formats that. Subclasses of NumberFormat that want
* to specifically handle big decimal numbers must override this method.
* class DecimalFormat does so.
*
- * @param number The number, a DigitList format Decimal Floating Point.
+ * @param number The number, a DecimalQuantity format Decimal Floating Point.
* @param appendTo Output parameter to receive result.
* Result is appended to existing contents.
* @param posIter On return, can be used to iterate over positions
* @return Reference to 'appendTo' parameter.
* @internal
*/
- virtual UnicodeString& format(const DigitList &number,
+ virtual UnicodeString& format(const number::impl::DecimalQuantity &number,
UnicodeString& appendTo,
FieldPositionIterator* posIter,
UErrorCode& status) const;
/**
* Format a decimal number.
- * The number is a DigitList wrapper onto a floating point decimal number.
+ * The number is a DecimalQuantity wrapper onto a floating point decimal number.
* The default implementation in NumberFormat converts the decimal number
* to a double and formats that. Subclasses of NumberFormat that want
* to specifically handle big decimal numbers must override this method.
* class DecimalFormat does so.
*
- * @param number The number, a DigitList format Decimal Floating Point.
+ * @param number The number, a DecimalQuantity format Decimal Floating Point.
* @param appendTo Output parameter to receive result.
* Result is appended to existing contents.
* @param pos On input: an alignment field, if desired.
* @return Reference to 'appendTo' parameter.
* @internal
*/
- virtual UnicodeString& format(const DigitList &number,
+ virtual UnicodeString& format(const number::impl::DecimalQuantity &number,
UnicodeString& appendTo,
FieldPosition& pos,
UErrorCode& status) const;
-public:
-
/**
* Return a long if possible (e.g. within range LONG_MAX,
* LONG_MAX], and with no decimals), otherwise a double. If
* The default formatting style is locale dependent.
* <p>
* <strong>NOTE:</strong> New users are strongly encouraged to use
- * {@link NumberFormatter} instead of NumberFormat.
+ * {@link icu::number::NumberFormatter} instead of NumberFormat.
* @stable ICU 2.0
*/
static NumberFormat* U_EXPORT2 createInstance(UErrorCode&);
* @param inLocale the given locale.
* <p>
* <strong>NOTE:</strong> New users are strongly encouraged to use
- * {@link NumberFormatter} instead of NumberFormat.
+ * {@link icu::number::NumberFormatter} instead of NumberFormat.
* @stable ICU 2.0
*/
static NumberFormat* U_EXPORT2 createInstance(const Locale& inLocale,
* Create a specific style NumberFormat for the specified locale.
* <p>
* <strong>NOTE:</strong> New users are strongly encouraged to use
- * {@link NumberFormatter} instead of NumberFormat.
+ * {@link icu::number::NumberFormatter} instead of NumberFormat.
* @param desiredLocale the given locale.
* @param style the given style.
* @param errorCode Output param filled with success/failure status.
* Returns a currency format for the current default locale.
* <p>
* <strong>NOTE:</strong> New users are strongly encouraged to use
- * {@link NumberFormatter} instead of NumberFormat.
+ * {@link icu::number::NumberFormatter} instead of NumberFormat.
* @stable ICU 2.0
*/
static NumberFormat* U_EXPORT2 createCurrencyInstance(UErrorCode&);
* Returns a currency format for the specified locale.
* <p>
* <strong>NOTE:</strong> New users are strongly encouraged to use
- * {@link NumberFormatter} instead of NumberFormat.
+ * {@link icu::number::NumberFormatter} instead of NumberFormat.
* @param inLocale the given locale.
* @stable ICU 2.0
*/
* Returns a percentage format for the current default locale.
* <p>
* <strong>NOTE:</strong> New users are strongly encouraged to use
- * {@link NumberFormatter} instead of NumberFormat.
+ * {@link icu::number::NumberFormatter} instead of NumberFormat.
* @stable ICU 2.0
*/
static NumberFormat* U_EXPORT2 createPercentInstance(UErrorCode&);
* Returns a percentage format for the specified locale.
* <p>
* <strong>NOTE:</strong> New users are strongly encouraged to use
- * {@link NumberFormatter} instead of NumberFormat.
+ * {@link icu::number::NumberFormatter} instead of NumberFormat.
* @param inLocale the given locale.
* @stable ICU 2.0
*/
* Returns a scientific format for the current default locale.
* <p>
* <strong>NOTE:</strong> New users are strongly encouraged to use
- * {@link NumberFormatter} instead of NumberFormat.
+ * {@link icu::number::NumberFormatter} instead of NumberFormat.
* @stable ICU 2.0
*/
static NumberFormat* U_EXPORT2 createScientificInstance(UErrorCode&);
* Returns a scientific format for the specified locale.
* <p>
* <strong>NOTE:</strong> New users are strongly encouraged to use
- * {@link NumberFormatter} instead of NumberFormat.
+ * {@link icu::number::NumberFormatter} instead of NumberFormat.
* @param inLocale the given locale.
* @stable ICU 2.0
*/
* @stable ICU 2.6
*/
const char16_t* getCurrency() const;
-
+
/**
* Set a particular UDisplayContext value in the formatter, such as
* UDISPCTX_CAPITALIZATION_FOR_STANDALONE.
* Get the rounding mode. This will always return NumberFormat::ERoundingMode::kRoundUnnecessary
* if the subclass does not support rounding.
* @return A rounding mode
- * @draft ICU 60
+ * @stable ICU 60
*/
virtual ERoundingMode getRoundingMode(void) const;
/**
* Set the rounding mode. If a subclass does not support rounding, this will do nothing.
* @param roundingMode A rounding mode
- * @draft ICU 60
+ * @stable ICU 60
*/
virtual void setRoundingMode(ERoundingMode roundingMode);