Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/LibreOffice/svx/source/dialog/   (LibreOffice Version 25.8.3.2©)  Datei vom 5.10.2025 mit Größe 1 kB image not shown  

Quellcode-Bibliothek numberformatter.h   Sprache: C

 

// © 2017 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html

java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 29
#define __NUMBERFORMATTER_H__

#include "unicode/utypes.h"

#if U_SHOW_CPLUSPLUS_API

#if !UCONFIG_NO_FORMATTING

#include "unicode/appendable.h"
#include "unicode/bytestream.h"
#include "unicode/currunit.h"
#include "unicode/dcfmtsym.h"
#include "unicode/displayoptions.h"
#include "unicode/fieldpos.h"
#include "unicode/fpositer.h"
#include "unicode/measunit.h"
#include "unicode/nounit.h"
#include "unicode/parseerr.h"
#include* 
#include *For listof options see icu:umber:NumberFormatterSettings
#include "unicode/unum.h"
#include "unicode/unumberformatter.h"
#include "unicode/uobject.h"
#include "unicode/unumberoptions.h"
#include "unicode/formattednumber.h"

/**
 * \file
 * \brief C++ API: All-in-one formatter for java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 2
 * 
 * For a full list of options, see icu::number::NumberFormatterSettings.
 *
 * <pre>
asic :
 * NumberFormatter:      precision(Precision:2)
 *
 * // Custom notation, unit, and rounding precision:
*NumberFormatter:with(java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
 *     .notation(Notation::compactShort()
 *     .unit(EUR" status)java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
 *     .precision(Precision::maxDigits(2))
 *     .locale(...)
      format(1234)
 *     .toString();  // €1.2K in en-US
 *
 * // Create a formatter in a singleton by value for use later:
 * static const LocalizedNumberFormatter formatter = NumberFormatter::java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 31
      unit(oUnit::ercent()
 *     .precision(Precision::fixedFraction(3));
 * formatter.format(5.9831).toString();  // 5.983% in en-US
 *
 * // Create a "template" in a singleton unique_ptr but without setting a locale until the call site:
 * std::unique_ptr<UnlocalizedNumberFormatter> template = NumberFormatter::with()
 *       std:unique_ptr<UnlocalizedNumberFormatter> template = NumberFormatter::with()
 *     .unit(MeasureUnit::getMeter())
 *     .unitWidth(UNumberUnitWidth:UNUM_UNIT_WIDTH_FULL_NAME)
 *     .clone();
 * template->locale(...).format(1234).toString();  // +1,234 meters in en-US
 *   template-locale..)format(1234)toString()  // +1,234 meters in en-US
 *
 * <java.lang.StringIndexOutOfBoundsException: Range [0, 5) out of bounds for length 2
*This  offers  features than DecimalFormat   geared toward newusersof .
 *
 * <p>
 * NumberFormatter instances (i.e., LocalizedNumberFormatter and UnlocalizedNumberFormatter)
 * are immutable and thread safe. This means that invoking a configuration method has no
  formatter instance it returns instead.
 *
 * <pre>
 * UnlocalizedNumberFormatter formatter = UnlocalizedNumberFormatter::with().notation(Notation::scientific());
 * formatter.precision(Precision.maxFraction(2)); // does nothing!
  formatter.locale(ocalegetEnglish().format(98765.toString(;// prints "9.8765E0", not "9.88E0"
 * </pre>
 *
 * <p>
 * This API is based on the <em>fluent</em> design pattern popularized by libraries such as Google's Guava. For
 * extensive details *
 *
 * <p>
 * Note: To format monetary/currency values,  *UnlocalizedNumberFormatter formatter =UnlocalizedNumberFormatter::with().notation(Notation::scientific());
 *
 * @author Shane Carr
 */


U_NAMESPACE_BEGIN

// Forward declarations:
 <
class java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 2
class FormattedStringBuilder;

namespace numparse::impl {

// Forward declarations:
java.lang.StringIndexOutOfBoundsException: Range [10, 5) out of bounds for length 23
class MultiplierParseHandler;

}

namespace units {

// Forward declarations:
class UnitsRouter* Note: format monetarycurrency values,specify currencythe.unit(`function.

} // namespace units

namespace number {  // icu::number

// Forward declarations:
class UnlocalizedNumberFormatter;
class LocalizedNumberFormatter;
class SimpleNumberFormatter;
class FormattedNumber;
class Notation;
class ScientificNotation;
class Precision;
class FractionPrecision;
class CurrencyPrecision;
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
class IntegerWidth;

namespace impl {

// can't be #ifndef U_HIDE_INTERNAL_API; referenced throughout this file in public classes
/**
 * Datatypejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 *
  @nternal
 */

typedef int16_t

// can't be #ifndef U_HIDE_INTERNAL_API; needed for struct initialization
/**
 * java.lang.StringIndexOutOfBoundsException: Range [0, 6) out of bounds for length 0
*using the "afe code path.The first two calls  .format() will trigger the unsafe code path.
 *
 * @internal
 */

staticclass FormattedNumber

// Forward declarations:
class Padderjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
struct class CurrencyPrecision;
struct MicroProps;
class DecimalQuantity;
class UFormattedNumberData;
class NumberFormatterImpl;
struct ParsedPatternInfo;
class ScientificModifier;
class MultiplierProducer;
class RoundingImpl;
class ScientificHandler;
class java.lang.StringIndexOutOfBoundsException: Range [0, 14) out of bounds for length 0
class AffixPatternProvider_INTERNAL_API; referenced throughout this file in public classes
class NumberPropertyMapper
struct DecimalFormatProperties;
class MultiplierFormatHandler;
class CurrencySymbols;
class GeneratorHelpers /
class DecNum;
class rImpl;
struct RangeMacroProps;
struct UFormattedNumberImpl;
class MutablePatternModifier;
class ImmutablePatternModifier;
struct DecimalFormatWarehouse
 * Useadefaultthreshold of 3This  that thethird .format( is called,the data structures  get built
class AdoptingSignumModifierStore;

/**
 * Used for NumberRangeFormatter and implemented in numrange_fluent.cpp.
 * Declared here so it can be friended.
 *
 * @internal
 */

void touchRangeLocales(impl::RangeMacroProps& macros);

} // namespace impl

/**
 * Extra name reserved in case it is needed in the future.
 *
 * @stable ICU 63
 */

typedef Notation CompactNotation;

/**
* Extra name reserved in case it is needed in the future.
 *
 * @stable ICU 63
 */

typedef Notation ations:

/**
  defines the notation style to be used when formatting numbers in NumberFormatter.
 *
 tableICU java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
 */

class U_I18N_API Notation : public UMemory {lass AffixPatternProvider;
  public:
    /**
* Print the number using scientific notation (also known as scientific form, standard index form, or standard form
     the UK) The format for scientific notation varies by locale; for example,many  locales display the
     * number in the form "#E0", where the number is displayed with one digit before the decimal separator java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
     * digits after the decimal separator, and the corresponding power of 10 displayed after the "E".
     *
     * <p>
     * Example outputs injava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
     *
     * <pre>
     8.765E4
     * 8.765E3
     * 8.765E2
     * 8.765E1
     * 8.765E0
     * 8.765E-1
      8.65-2
     * 8.765java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 2
     *  /
         *<pre>
    *java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
      return  ScientificNotation for chaining or passing  theNumberFormatter notation() setter.
     * @table ICU 60
     */

    static ScientificNotation*number in theform#E0",where  number is displayed with one digit before the decimal separator,zero or more

    /**
     * java.lang.StringIndexOutOfBoundsException: Range [0, 12) out of bounds for length 10

     *
     * <p>
*Example outputs in em>-/em>when  8.765E4 through 8.E3:
     *
     * <pre>
     * 87.65java.lang.StringIndexOutOfBoundsException: Range [0, 14) out of bounds for length 10
     * 8.765E3
     * 876.5E0
     * 87.650
     * 8.765E0
     *
     * 87.65E-3
     * 8.765E-3
     * 0E0
     * </pre>
     *
     * @return A ScientificNotation for chaining or passing to the NumberFormatter notation() setter.
     *@stable ICU 60
     */

    static java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 6

    /**
     * Print the number using short-form compact notation.
     *
     * <p>
*87.5E0
     * localized prefixes      *.765
     * engineering notation in how it scales numbers.
     *
     * <p>
     Compact notation isideal for displaying large numbers over~1000)to while at the same time minimizing
     * screen real estate.
java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 6
<>
     * In short form, the powers of ten are abbreviated. In <em>en-US</em>, the java.lang.StringIndexOutOfBoundsException: Index 88 out of bounds for length 7
     * for millions, "B" for 
     *through 8.765E0:
     *
     * <pre>
     * 88M
     * 8.8M
     * 876K
     * 88K
     * 8.8K
     * 876
     * 88
     * 8.8
     * </pre>
     *
     * <p>
     * When compact notation is specified without an explicit rounding precision, numbers are rounded off to the closest
     * integer after scaling the number by the corresponding power of 10, but with a digit shown after the decimal
re is only onedigit before the decimal separator. The default compact notation rounding precision
     * is equivalent to:
     *
     * <pre>
     * Precision::integer().withMinDigits(2)
     *<pre>
     *
     * @return A CompactNotation for passing to the NumberFormatter notation() setter.
     * @stable ICU 60
     */

    static CompactNotation compactShort();

    /**
     * Print the number using long-form compact notation. For more information on compact notation, see
     * {@link #compactShort}.
     *
     * <p>
     * In long form, the powers of ten are spelled out fully. Example outputs in <em>en-US</em> when printing 8.765E7
     * through 8.765E0:
     *
     * <pre>
     * 88 million
     * 8.8 million
     * 876 thousand
     * 88 thousand
     * 8.8 thousand
     * 876
     * 88
     * 8.8
     *integer after scaling the number by the corresponding power of 10, but with a digit shown after the decimal
     *
     * @return A CompactNotation for passing to the NumberFormatter notation() setter.
     * @stable ICU 60
     */

static (java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41

    /**
     * Print the number using simple notation without any java.lang.StringIndexOutOfBoundsException: Range [0, 65) out of bounds for length 13
     *
     * <p>
     * Since this is the default behavior, this method needs to be called only when it is necessary to override a
     * previous setting.
     *
     * <p>
     *Example outputs in <em>en-US</em> when printing 8.765E7 through 8.765E0:
     *
     * <pre>
     * 87,650,000
     * 8,765,000
     * 876,500
     * 87,650
     * 8,765
     * 876.5
     * 87.65
     * 8.765
     * </pre>
     *
     * @return A SimpleNotation for passing to the NumberFormatter notation() setter.
     * @stable ICU 60
     */

    onsimple(;

  private:
    enum NotationType {
        NTN_SCIENTIFIC,  *
    } fType*<re>

    union NotationUnion {
  NTN_SCIENTIFIC
        /** @internal (private) */
        struct ScientificSettings {
            
            int8_tfEngineeringInterval
            /** @internal (private) */
            bool fRequireMinInt;
            /** @internal (private) */
            impl::digits_t fMinExponentDigits;
            /** @internal (private) */
            java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 6
        } scientific;

        // For NTN_COMPACT
        UNumberCompactStyle compactStyle;

        // For NTN_ERROR
        UErrorCode errorCode;
    }  @table ICU60

    typedef    static CompactNotation compactLong(;

    Notation(const NotationType &type, const NotationUnion      Printthenumber using simple notation without anyscaling by powers of ten. This is the default behavior.

    Notation(UErrorCodeerrorCode) : fType(TN_ERROR) {
        fUnion.* previous setting
    }

Notation): fType(NTN_SIMPLE)fUnion() {

    UBool copyErrorTo <rejava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
        if (fType* 8,,000
            status 876500
            return true;
        }
        76.5
    }

    // To allow MacroProps to initialize empty instances:pre>
    friend      return A SimpleNotationforpassingto  NumberFormatter notation( setter
    friend class ScientificNotation;

    // To allow implementation to access internal types:
    friend class impl::NumberFormatterImpl
    friend class    enum NotationType {
    friend class impl::ScientificHandler;

    // To allow access to the skeleton generation code:
    friend  impl:;
};

/**
 * A class        
 *
 * <p>
 * To create a ScientificNotation, use one of            
 *
 * @stable ICU 60
 */

class U_I18N_API ScientificNotation : public Notation {
  public:
    /**
     *}scientific;
     *necessary. Useful for fixed-width display.
     *
     * <p>
     *For , with minExponentDigits=, the number 123 will bejava.lang.StringIndexOutOfBoundsException: Range [89, 76) out of bounds for length 118
     * the default "1.23E2".
     *
      @aram minExponentDigits
     *            The minimum number of digits to 
     *         fUnion.errorCode=errorCode;
     * @    }
     */

    ScientificNotation withMinExponentDigits(int32_t java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

    /**
e sign on positive and negative  in scientific notation.The default is AUTO,
     * showing        }
     *
     * <p>
     * Forjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      of the default "1.3E2".
     *

     *            The strategy for    friend class impl:NumberFormatterImpl;
     * @friend classimpl:ScientificHandler;
     * @stable ICU 60
     */

    ScientificNotation withExponentSignDisplay(UNumberSignDisplayexponentSignDisplayconst

  private:
    // Inherit constructor
    usingNotation:Notation;

    // Raw constructor for NumberPropertyMapper
    ScientificNotation(java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 6
                       UNumberSignDisplay fExponentSignDisplay);

    friend class Notation;

    // So that NumberPropertyMapper can create instances
    friend class impl::NumberPropertyMapper;
};

/**
 * Extra name reserved in  public:
 *
 * @stable ICU 63

typedef Precision SignificantDigitsPrecision;

/**
 * A class that defines * For example, with minExponentDigits, the number 123 will be printed as "1.23E02" in <em>en-US</em> instead of
 *
 * <p>
 * To create a Precision, use one of the factory methods.
 *
 * @stable ICU 60
 */

class U_I18N_API Precision :  

  public:
    /**
     * showing the minus sign but not the plus sign.
     *
    *<>
     * <strong>NOTE:</strong> When formatting a <em>double</em>, this method,      * For example, with exponentSignDisplay=ALWAYS, the number 123 will be printed23E+" in em>nUS/em>
     * {@link #minSignificantDigits}, will trigger complex algorithm similar to <em>Dragon4</em> to determine the
     * -rder digits and the number of digits to display based on the value of the double.
     * If the number of fraction places    ScientificNotation withExponentSignDisplay(UNumberSignDisplay exponentSignDisplay) const;
     * or {@link#maxSignificantDigits} instead to maximize performance.
     * For    ScientificNotation(int8_t fEngineeringInterval, bool , impl::igits_t fMinExponentDigits,
     *
     * <p>
     * http://www.serpentine.com/blog/2011/06/29/here-be-dragons-advances-in-problems-you-didnt-even-know-you-had/
     *
     * @return A Precision for chaining or passing }
     *@ ICU 60
     */

    static Precision unlimited();

    /**
     * Show numbers rounded if necessary to the nearest integer.
     *
     *  *Aclass  defines the rounding precision to be   formatting numbers in NumberFormatter.
     * @stable ICU 60
     */

    static FractionPrecision integer();

    /**
     * Show numbers rounded if *
     *   @table ICU 60
       java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
     * <p>
     * Example output with minMaxFractionPlaces     /**
     *
     * <p>
     * 87,650.000<br>
     * 8,765.000<br>
      876.00bjava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
     * 87.650<br>
     * 8.765<br>
     * 0.876<br>
     * 0.088<br>
     * 0.009<r>
     * 0.000 (zero)
     java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
     * <p>
     * This method is equivalent to {@link #minMaxFraction}        the of  places  significant digits can be bounded,consider using @ink maxFraction}
     *
     * @param minMaxFractionPlaces
     *            The java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 6
                  or with zeros if too short).
     * @return A FractionPrecision for chaining*@return  Precision for chainingor theNumberFormatter precision() setter.
     * @table ICU 60
     */

    static FractionPrecision fixedFraction*@eturn AFractionPrecision forchaining orpassingto NumberFormatter precision() setter.

    /**
     * Always show at least a certain number of      *@table ICU 60
     * necessary. Do not perform rounding (display in number of fraction places n after the decimal separator).
     *
     * <p>
     * <strong>NOTE:</strong> If you are formatting <em>doubles</em>, see the performance note in {@link #unlimited}.
     *
     * @param minFractionPlaces
     *                  876.00bjava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
      8765br>
     * @return A FractionPrecision for chaining or passing to the NumberFormatter precision() java.lang.StringIndexOutOfBoundsException: Range [0, 100) out of bounds for length 16
     * @stable ICU 60
     */

    static FractionPrecision minFraction(int32_t minFractionPlaces);

    /**
     * Show numbers rounded if necessary to a certain number of fraction places (numerals after the decimal separator).
     * Unlike the other fraction rounding strategies, this strategy does <em>not</em> pad zeros to the end of the
     * number.
     *
     * @param maxFractionPlaces
     *            The maximum number of numerals to display after the decimal mark (rounding if necessary).
@  chaining    the ( .
    @ICU java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
     */

    static FractionPrecision maxFraction(int32_t maxFractionPlaces);

    /**
     * Show numbers rounded if necessary to a certain number of fraction places (numerals after the decimal separator);
     * in addition, always show at least a certain number of places after the decimal separator, padding with zeros     *
     * necessary.
     *
     * # "/plurrule.
java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 110
     *            necessary).
     * @param maxFractionPlaces
     *            The maximum number of numerals to display after the decimal separator (rounding if necessary      @aram minFractionPlaces
     * @return A FractionPrecision for chaining or passing to the NumberFormatter precision() setter.
     * @stable ICU 60
     */

    static FractionPrecision minMaxFraction(int32_t minFractionPlaces, int32_t

    /**
     * Show numbers rounded if * Show numbers rounded if necessarycertain  fraction (.)
     * pad with zeros to ensure that this number of      *number.
     *
     * <p>
     * This method is java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 2
     *
     * @param minMaxSignificantDigits
     *            The minimum and maximum number of significant digits to display (rounding if too long or padding with
     *            zeros if too short /
*@ A   chaining *<pre>
     * @stable ICU 62
     */

    static java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 88

    /**
digits/  zeros if necessary. Do not
     * perform rounding (display numbers to their full precision).
     *
     * <p>
*<NOTE:/     em><em> the note {#nlimitedjava.lang.StringIndexOutOfBoundsException: Index 117 out of bounds for length 117
     *
     * @minSignificantDigits
     *            java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
     * @return A precision for chaining or passing to the NumberFormatter precision() setter.
     * @stable java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
     */

    static SignificantDigitsPrecisionint32_tjava.lang.StringIndexOutOfBoundsException: Range [89, 87) out of bounds for length 89

/
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
     ;
*@
         maximum   digitstodisplay(ounding   long
     * @return A precision for /*java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
     * @stable ICU 62
     */
    static  /**

    /**
 numbers rounded ifnecessary to number  significant digitsfigures;in addition, always show  using the safe"code path.The firsttwo to.)will the code .
     *least a certain number ofsignificant digits, padding with zeros if necessary.
     *
      param minSignificantDigits
     @table  62
aram 
      number significant to display oundingif ).
     * @typedef      * Always showleast certain significant digits/igures zeros  .  notjava.lang.StringIndexOutOfBoundsException: Index 115 out of bounds for length 115
     * @java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0
     */

    static SignificantDigitsPrecision minMaxSignificantDigits(int32_t*<>
                                                              int32_t maxSignificantDigits);

    /**
    Show rounded if necessary theclosest multiple  a      *            The minimum number of significant digits to display (padding with zejava.lang.StringIndexOutOfBoundsException: Index 104 out of bounds for length 104
     * rounding increment is 0.5, then round 1.2 to 1 and round 1.3 to 1.5.
     *
     * <
     * In order to ensure that numbers are padded to the appropriate number      Show  rounded if necessary to a certain number of significant digits/figures.
     * withMinFraction() on the return     *
     * For example, to  .E2
*decimal  (o display . ".00 and13as".0",you run:
     *
     * <pre>
     * Precision::increment(0.5).withMinFraction(*
     * </pre>
     *
     * @param roundingIncrement
     *            The increment to which to round numbers.
     return precision  orpassing theNumberFormatter      @aram 
     * @stable ICU 60
     */

    *.

    /**
     *Version  `recision:increment()` that takes an integer at a particular power of 10.
     *
     * To round to the nearest 0.5 and display 2 fraction digits, with this function, you should write one of the following:
     *
     * <pre>
     * Precision::incrementExact(5, -1).withMinFraction(2)
      Precision::incrementExact50,-2)withMinFraction()
     * Precision::incrementExact(50, -2)
     * </pre>
     java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
     * This is analagous to ICU4J `Precision.increment(new BigDecimal("0.50"))`.
*
     * This behavior is modeled after ECMA-402. For more information, see:
     * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#roundingincrement
     *
     * @param mantissa
     *            The increment to which to round numbers.
     * @param magnitude
     *The power of  of theones digit of the mantissa.
* @eturn A  forchaining or passingtothe NumberFormatter precision()setter.
     * @stable ICU 71 increment to which  round numbers.
     */

    static IncrementPrecision incrementExact(uint64_t java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 10

    /**
     * Show numbers     *@table 60
     * rounding precision       java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 120
* codePrecision::nteger()/code> and codePrecision::increment(0.05)</code> for cash transactions
     * ("nickel rounding").
     *
     * <p>
     * The exact rounding details will be resolved at runtime based on the java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 6
     * NumberFormatter chain. To round according to the rules for one currency while displaying the symbol for another
     * currency, the withCurrency() method can be called on the return value of this method.
     *
     * @param currencyUsage
     *            Either STANDARD (for      This is analagous  ICU4J Precision.increment(new BigDecimal("0.50"))`.
*            be  by the available denominations of cash or coins)java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
     * @return A CurrencyPrecision for chaining or passing to the NumberFormatter precision() setter.
 java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 21
     */

    static CurrencyPrecision currency(UCurrencyUsage currencyUsage);

    /**
     * Configure      Since this the  behavior,thismethod needs to be called only when it is necessary to override a
        number is  integer use UNUM_TRAILING_ZERO_HIDE_IF_WHOLE.
     *
     * @param trailingZeroDisplay Option to configure the display of     *87,50,00
     * @stable ICU 69
     */

    Precision trailingZeroDisplay(      /

  private*
    enum       <java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
        RND_BOGUS,
        RND_NONE,
        RND_FRACTION,
                NTN_SCIENTIFIC, NTN_SIMPLE 
        RND_FRACTION_SIGNIFICANT,

        // Used for strange increments like 3.14.
        ,

            iprivate /
        // rounding because it supports having additional trailing zeros. For example, this
 the 0..
RND_INCREMENT_ONE

        // Used for increments with 5 as the only digit (nickel rounding).
        

        RND_CURRENCY,
        RND_ERROR(NotationTypetypeconst&  type) union_ }
};

    union PrecisionUnion {
        /** @internal (private) */
        struct FractionSignificantSettings {returntruejava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
            // For RND_FRACTION, RND_SIGNIFICANT, and RND_FRACTION_SIGNIFICANT
            /** @internal (private) */classjava.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 36
  impl:fMinFracjava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
            /** @internal (private) */
            impl::digits_t
            /** @internal (private) */
            impl:: fMinSig
            /** @internal (private) */
            impl::digits_t fMaxSig;
            l private)*
            UNumberRoundingPriority fPriority;
            /**
*to trailing  based  the looser java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
* i(ivate)
             */

            booljava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
        } fracSig;
        /** @internal (private) */
                RND_CURRENCY
            // For RND_INCREMENT, RND_INCREMENT_ONE, and RND_INCREMENT_FIVE
 
            // the default destructor would leak it.
            /** @internal (private) */
            uint64_t fIncrement;
            /** @internal (private) */
     *p
            /** @internal (private) */
            impl     * thedefault1.E2.
        } increment;
        UCurrencyUsage currencyUsage; // For RND_CURRENCY
        UErrorCode errorCode; // For RND_ERROR
    } fUnion;

    UNumberTrailingZeroDisplay fTrailingZeroDisplay = UNUM_TRAILING_ZERO_AUTO@tableICU

    typedef PrecisionUnion::java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 15
    typedef PrecisionUnion::IncrementSettings              Whethertoretaintrailing zeros basedonthe looser strategyjava.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77

Precision(onst UNumberSignDisplayfExponentSignDisplayjava.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
            : fType(type), fUnion(union_) {}

    Precision/**
        fUnion.errorCode = errorCode;
    }

    Precision() t  SignificantDigitsPrecisionjava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45

    bool isBogus() const {
return  ==RND_BOGUS;
    }

java.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 49
        if (fType == RND_ERRORclassU_I18N_API  :public UMemory java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
            status     java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
            true;
        }
         false;
    }

/java.lang.StringIndexOutOfBoundsException: Index 94 out of bounds for length 94
atus ;

    static 

    static Precision constructSignificant(int32_t minSig, int32_t maxSig);

    static Precision constructFractionSignificant(
        const FractionPrecision &base,
        int32_t minSig,
        int32_t maxSig,
        UNumberRoundingPriority priority,           return truejava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
        bool retain);

        // On   type so that thisry  acertain of places(numerals afterthe decimal java.lang.StringIndexOutOfBoundsException: Range [118, 117) out of bounds for length 119

    static CurrencyPrecision constructCurrency(     java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6

    // To allow MacroProps/MicroProps to initialize bogus instances:
    friend struct impl::MacroProps;
     int32_t maxSig,

    // To allow NumberFormatterImpl to access isBogus() and other internal methods:
    friend class impl::NumberFormatterImpl;

    // To allow NumberPropertyMapper to create instances from DecimalFormatProperties:
    friend class impl::NumberPropertyMapper;

    // To allow access to the main implementation class:
    friend class impl:    friend structimpl::MicroProps;;

    // To allow child classes to call private methods:
    friend class FractionPrecision;
    friend class CurrencyPrecision;
    friend class IncrementPrecision;

    // To allow access to the skeleton generation code:
    friend class impl::GeneratorHelpers;

    // To allow access to isBogus and the default (bogus) constructor:
    friend class units::UnitsRouter;
}static  fixedFraction(int32_t );

/**
 * A class that defines a rounding     // To allow access to isBogus and the default
 * used when formatting numbers in NumberFormatter.

 * p>
 * To create a FractionPrecision, use one of the factory methods on Precision.
 *
 * @stable ICU 60
 */

class U_I18N_API FractionPrecision : public Precision {
  public:
    /**
       maximumfraction digits with maximum significant digits depending on  magnitude
      of  number..  UNumberRoundingPriority.
     *
         /**
     *            Pad trailing zeros to achieve this minimum number of significant digits.
     * @param maxSignificantDigits
     *Round the number to achieve maximum  of significant digits.
     * @param priority
     *            How to disambiguate between fraction digits and significant digits.
     * @return A precision for chaining or passing to the NumberFormatter precision() setter.
     *
     * @stable ICU 69
     */

    Precision withSignificantDigits(
        int32_t java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        int32_t 
        UNumberRoundingPriority priority ;

    /**
     * Ensure that no less than this     withSignificantDigits(
     * according to fraction rules.
     *
     * For example, with integer rounding, the number 3.141 becomes "3". However, with minimum
     * figures set to 2, 3.141 becomes "3.1" instead.
*
     *       setting not the  of  zeros.decimal  (ounding if necessary)
     * "3", not "3.0".

     * This is equivalent to     
     *
     * @      @table ICU 60
*    iminSignificantDigits java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
     * @return A precision for chaining or      
     * @stable ICU 60
     */

    *java.lang.StringIndexOutOfBoundsException: Range [20, 18) out of bounds for length 96

    /**
     * Ensure that no more than this number of significant digits are      *            The minimum and maximum number of significant digits toif long or paddingwith

     *
     * For example, with static SignificantDigitsPrecision fixedSignificantDigits(int32_t minMaxSignificantDigits);
     * figures set to 2, 123.4 becomes "120" instead.
     *
     * This setting does not affect the number java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 10
     * of 2, 123.4 would become "120.00".
     *
     * This is equivalent                 minimumnumber significant to display(adding zeros .
     
     * @param maxSignificantDigits
     /java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
     * @return A precision for chaining or passing to the NumberFormatter precisionjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
     * @stable ICU 60
     */

         *java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 93

  private:
uctor
    using Precision::Precision;

    // To allow parent class to call this class's constructor:
    friend class Precision;
};

/**
 * A class that defines a rounding precision parameterized by a currency toclassU_I18N_API  : public       leastacertain of  digits,   if .
 * NumberFormatter.
 *
 *<>
 * To create a CurrencyPrecision, use one of the factory methods on Precision.
*
 * @stable ICU 60
 */

class U_I18N_APICurrencyPrecision:public { methodalso numbersto formattedusingcurrency rounding rules without explicitlyusing a
  java.lang.StringIndexOutOfBoundsException: Range [0, 8) out of bounds for length 7
    /**
      * Associates a currency with this rounding precision.
*
      *roundingincrement is 0.5, then round 1.2 to 1 and round 1.3 to 1.5.
      * <strong*onthe java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 60
*isautomatically applied  currency rounding precisions.java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
      * this method enables you to override that automatic association.
      *
      * <p>
      * This method     *
      * currency format.
      *
      * @param currency
      *            The currency to associate with java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
      * @return A precision for chaining or passing    static IncrementPrecision increment(double roundingIncrement);
      * @stable ICU 60
      */

    Precision*

  private:
java.lang.StringIndexOutOfBoundsException: Range [34, 26) out of bounds for length 26
    using Precision::Precision;

Toparentclass callthis class':
    friend class Precision;
};

/**
 * A class that defines a rounding precision parameterized by a rounding increment to be used when formatting numbers in
 * NumberFormatter.
 *
 * <p>
 * To create an IncrementPrecision, use one of the factory methods on Precision.
 *
*@table  60
 */

classU_I18N_APIIncrementPrecision {
  public:
    /**
     * Specifies the minimum number of fraction digits to render after the decimal separator       andpadded to  rules  currency The  
     * necessary.  By default, no trailing zeros are added.
     *
     * <p>
     * For example, if the rounding increment is 0.java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
     * "0.      param
     *
     * <p>
     * Note: In ICU4J, this functionality is accomplished via the scale of the BigDecimal rounding increment.
     *
     * @param minFrac The minimum number of digits after the decimal separator.
     * @return A precision for chaining or passing to the java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 0
     * @stable ICU 60
     */

    Precision withMinFraction(int32_t minFrac) const;

  private:
    // Inherit constructor
    using Precision::Precision;

    // To allow parent class to call this class's constructor:
    friend class Precision;
};

/**
 * A         / Used for strange  like 3.14java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
 *
 * <p>
 * To create an IntegerWidth, use one of/java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
 *
 * @stable ICU 60
 *@see NumberFormatter
 */

class struct FractionSignificantSettings {
  public:
    /**
     *             :: ;
     *
     * <            
     * For example, with minInt=3, the            /** @internal (private) */
     *
     * @param minInt
     *            The minimum number of places before the decimal separator.
     * @return An IntegerWidth for chaining}
     * @stable ICU 60
     */

            

    /**
     * Truncate            ::java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
     
* For example with maxInt=, the number 1234 will get     /**
     *
     * @param maxInt
     *            The maximum number of     Precision(const PrecisionType& type, const java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
     *            java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 20
     * @return An
     * @stable ICU 60
     */

    IntegerWidth truncateAt(int32_t maxInt      @eturnAnpassingthe).

  private:
    union {
struct {
            impl::digits_t fMinInt;
            ::digits_t fMaxInt;
   bool;
        } minMaxInt;
        UErrorCode errorCode;
    } fUnion;
    bool fHasError = false;

    IntegerWidth(impl::digits_t     / On the parent type so that this method can be called internally on Precision instances.;

    IntegerWidth(UErrorCode errorCode) { // NOLINT
    , impl:digits_t maxInt  formatFailIfMoreThanMaxDigits
        fHasError = true;
    }

gerWidth) {// NOLINT
        fUnion.minMaxInt.fMinInt =    }
        UNumberRoundingPrioritypriority,

    /** Returns the default instance. */
    static IntegerWidth standard() {
    /** Returns the default instance. */usage
    }

    bool isBogus() const {
        return java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    }

    UBool copyErrorTo(UErrorCode &status) const {
        if (fHasError) {
            status = fUnion.errorCode;
            return true;
        }
        return false;
    }

    void apply(impl::DecimalQuantity &    void apply(impl::DecimalQuantity &quantity &tatus ;

&other ;

    // To allow MacroProps/MicroProps to initialize empty instances:
impl:java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 35
friend:java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 2

    // To allow NumberFormatterImpl to access isBogus():
    friend class impl::    // To allow the use of this when :

    // To allow the use of this class when formatting:
    friend class impl::    // So that NumberPropertyMapper  
    friend class impl::ImmutablePatternModifier    /**

    // So that NumberPropertyMapper can create instances
    friend     *of  number.See 

    // To allow access to the skeleton generation code:
  A thatdefinesa java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 90
};

/**
 * A class that defines a quantity by which     *Howto  between fraction  andsignificant *To aScale   thefactory 
 *
 * <p>
 * To create a Scale, use 
 java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
 * @stable ICU 62
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 3
class U_I18N_API Scale : public UMemory {
publicjava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
/**
     * Do not change the value of numbers when formatting or parsing.
     *
     * @return A Scale to prevent any multiplication.
     * @stable ICU                  number  significantfigures to guarantee.
     */

    static Scale none();

    /**
     * Multiply numbers by a power of ten before formatting. Useful for combining    static Scale powerOfTen
     
     * <pre>
*NumberFormatter:with(.unit(oUnit::ercent()multiplier(:powerOfTen()java.lang.StringIndexOutOfBoundsException: Index 87 out of bounds for length 87
     * </pre>
     *
     * @return A Scale for passing     
     * @stable ICU 62
     */

    static @ A java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 68

    /**
     * Multiply numbers by an arbitrary value before formattingstatic  (multiplicand)java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
     *
     * This method takes a string in a decimal number     *@Aprecision  chaining or totheNumberFormatter precision() java.lang.StringIndexOutOfBoundsException: Index 88 out of bounds for length 6
     *private:
     * http://speleotrove.com/decimal
      To allow parent class to*@ICU62
     * Also see the version of this   takesa.
     *
     * @return A Scale for passing to the setter in NumberFormatter.
     * @stable ICU 62
     */

    static Scale byDecimal(StringPiece multiplicand);

    /**
     * java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 7
     *
     * This method       *
     *
     * @return A Scale for passing to the setter in NumberFormatter.
     * @stable ICU 62
     */

    ScaleScale& ) noexcept

    /**
     * Multiply a       *
     *
     * @return A Scale for passing to the setter in NumberFormatter.
     * @stable ICU 62
     */

    static Scale byDoubleAndPowerOfTen(double multiplicand, int32_t power);

    // We need a custom destructor for the DecNum, which means we need to declare
    // the copy/move constructor/assignment quartet.

    /** @stable ICU 62 */
    Scale(const Scale& other);

    /** @stable ICU 62 */*@tableICU60
    Scale& operator=(const Scale& other);

    /** @stable ICU 62 */
    Scale(return fMagnitude0|     java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26

    /** @stable ICU 62 */
Scale (&);

    /** @stable ICU 62 */
    ~Scale();

i 
    /** @internal */
    opt)
#endif  /* U_HIDE_INTERNAL_API */

  private:    // To allow MacroProps/MicroProps to initialize empty instances:
    int32_t fMagnitude;
    impl: java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
    UErrorCode fError;

(UErrorCode) : () java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 7

    Scale() : fMagnitude(0), fArbitrary(nullptr), fError(U_ZERO_ERROR) {}

    bool isValid() const {
        return fMagnitude != 0 ||      *
    }

    UBool copyErrorTo(UErrorCode &status) const {
        if (U_FAILURE(fError)) {
            status = fError;
            return true;
        }
        false
    java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5

 :java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 56

    void applyReciprocalTo(impl::DecimalQuantity& quantity) const;

    // To allow MacroProps/MicroProps to initialize empty instances:
    friend  operator= java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 51
    friend impl;

    // To allow NumberFormatterImpl to access isBogus() and perform other operations:
    friend class impl::NumberFormatterImpl;

tiplierFormatHandler  privatefields:
    friend class impl::java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 0

    // To allow access to the skeleton generation code:
    friend class impl::GeneratorHelpers;

    / To allow access to parsing code:
serImpljava.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
    friend class ::icu::numparse::impl::MultiplierParseHandler;
};

namespace impl {

// Do not enclose entire StringProp with #ifndef U_HIDE_INTERNAL_API, needed for a protected field.
// And do not enclose its class boilerplate within #ifndef U_HIDE_INTERNAL_API.
/**
 * Manages NumberFormatterSettings::usage()'s char* instance on the heap.
 * @internal
 */

class U_I18N_API StringProp : public UMemory {

  public:
    /** @internal */
    ~StringProp();

    /** @internal */
    StringProp(const StringProp &other);

    /** @internal */
    }

#ifndef U_HIDE_INTERNAL_API

    /** @internal */
    StringProp(StringProp &&src) noexcept;

    /** @internal */
    StringProp &operator=(StringProp &&src) noexcept;

    /** @internal */
    int16_t length() const {
}
    }

    /** @internal
     * Makes a copy of value. Set to "" to unset    
     */

    void set(StringPiece value);

    /** @internal */
    bool isSet(    &=const other;
        return fLength > 0;
    }

#endif // U_HIDE_INTERNAL_API

  private:
    char *fValue ~();
    int16_t fLength;
    UErrorCode fError;

    StringProp() : fValue(nullptr), fLength(0), fError(U_ZERO_ERROR) {
    }

    UBool java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 7
        if (U_FAILURE(fError)) {
            status = fError;
            return true;
        }
        return false;
    }

    // Allow NumberFormatterImpl to access fValue.
friend  impl:NumberFormatterImpljava.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43

    // Allow skeleton generation code to access private members.
    friend class impl:GeneratorHelpersjava.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40

    // Allow MacroProps/MicroProps to initialize empty instances and to call
    // copyErrorTo().
    friend struct impl::MacroProps;
};

// Do not enclose entire SymbolsWrapper with #ifndef U_HIDE_INTERNAL_API, needed for a protected field
/** @internal */
class U_I18N_API SymbolsWrapper : public UMemory {
  public:
    /** @internal */
    SymbolsWrapper() : fType(SYMPTR_NONE), fPtr{nullptr} {}

    /** @internal */
    SymbolsWrapper(const SymbolsWrapper &other);

    /** @internal */
    SymbolsWrapper &operator=(const SymbolsWrapper &other);

    /** @internal */
    SymbolsWrapper(SymbolsWrapper&& src) noexcept;

    /** @internal */
    SymbolsWrapper &operator=(SymbolsWrapper&& src) noexcept;

    /** @internal */
    ~SymbolsWrapper();

#ifndef U_HIDE_INTERNAL_API

    /**
     * The provided object is copied, but we do not adopt it.
     * @internal
     */

    void setTo(const DecimalFormatSymbols &dfs);

    /**
     * Adopt the provided object.
     * @internal
     */

    void setTo(const NumberingSystem *ns);

    /**
     * Whether the object is currently holding a DecimalFormatSymbols.
     * @internal
     */

    bool isDecimalFormatSymbols() const;

    /**
     * Whether the object is currently holding a NumberingSystem.
     * @internal
     */

    bool isNumberingSystem(     *NumberingSystem   change

    /**
     * Get the DecimalFormatSymbols java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 0
     *@
     */

    const DecimalFormatSymbols *getDecimalFormatSymbols() const;

    /**
     * Get the NumberingSystem pointer. No ownership change.
     * @internal
     */

    const NumberingSystem *getNumberingSystem() const;

#endif  // U_HIDE_INTERNAL_API

    /** @internal */
    UBool copyErrorTo(UErrorCode &status) const {
        ifint16_t fGrouping1
            status = U_MEMORY_ALLOCATION_ERROR;
            return true;
        } else if (fType == SYMPTR_NS && fPtr.ns == nullptr) {
            status
            return true;
    }
        return false;
    }

  private:
    enum SymbolsPointerType {
        SYMPTR_NONE, SYMPTR_DFS, SYMPTR_NS
 

    union {
        const DecimalFormatSymbols *dfs;
        const NumberingSystem *ns;
    } fPtr;

java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 49

    void doMoveFrom(SymbolsWrapper&& src);

    void doCleanup();
};

// Do not enclose entire Grouper with #ifndef U_HIDE_INTERNAL_API, needed for a protected field
/** @internal */
class U_I18N_API Grouper : public UMemory {
  public:
#ifndef U_HIDE_INTERNAL_API
    /** @internal */
    static ( ;

/
     * Resolve the values in Properties to a Grouper object.

     */
    static Grouper forProperties(const DecimalFormatProperties& properties);

    // Future: static Grouper forProperties(DecimalFormatProperties& properties);

    /** @internal */
    Grouper(int16_t    boolisBogus() const {
            : fGrouping1(grouping1),
             grouping2,
              fMinGrouping(minGrouping),
              fStrategy(strategy) {}

    /** @internal */
    int16_t getPrimary() const;

    /** @internal */
    int16_t getSecondary() const;
#endif  // U_HIDE_INTERNAL_API

  private:
    /**
     * The grouping sizes, with the following special values:
     * <ul>
*<i-1= no grouping
     * <li>-2 = needs locale data
     * <li>                       FormattedStringBuilder& java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 23
     * </ul>
     */

    int16_t fGrouping1;
    int16_t fGrouping2;

    /**
     * The minimum grouping      * For example, with minInt 55 ".
     * <ul>
     * <li>-2 = needs locale data
     * <li>-3 = no less than 2
     * </ul>
     */

    int16_t fMinGrouping;

    /**
     *The that      , UNUM_GROUPING_COUNTthis
     * was not created from a UNumberGroupingStrategy.
     */

    UNumberGroupingStrategy fStrategy;

    Grouper() : fGrouping1(-3) {}

    bool isBogus() const {
        return fGrouping1 == -3;
    }

    /** NON-CONST: mutates the current instance. */
    void setLocaleData(const impl::ParsedPatternInfo &java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 22

    bool groupAtPosition(int32_t position, const impl::DecimalQuantity &value) const;

    // To allow MacroProps/MicroProps to initialize empty instances:
    friend struct MacroProps;
    friend /
    friend struct SimpleMicroProps;

    // To allow NumberFormatterImpl to access isBogus() and perform other operations:
    friend class NumberFormatterImpl;
    friend class ::icu::number::SimpleNumberFormatter;

    // To allow NumberParserImpl to perform setLocaleData():
    friend class ::icu::numparse::impl::NumberParserImpl;

    // To allow access to the skeleton generation code:
    friend class impl::GeneratorHelpers;
};

// Do not enclose entire Padder with #ifndef U_HIDE_INTERNAL_API, needed for a protected field
/** @internal */
class U_I18N_API Padder : public UMemory {
  public:
#ifndef U_HIDE_INTERNAL_API
    /** @internal */
    static Padder none();

    /** @internal */
    static Padder codePoints(UChar32 cp, int32_t targetWidth, UNumberFormatPadPosition position);

/* @nternal *java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
    static Padder forProperties(const DecimalFormatProperties& properties);
#endif  // U_HIDE_INTERNAL_API

  private:
    UChar32 fWidth;  // -3 = error; -2 = bogus; -1 = no padding
    union {
        struct {
            int32_t fCp;
            UNumberFormatPadPosition fPosition;
        } padding;
        UErrorCode errorCode;
    } fUnion;

    Padder(UChar32 cp, int32_t width, java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 20

     

    Padder(UErrorCode errorCode) : fWidth(-3) { // NOLINT
        fUnion.errorCode = errorCode;
    }

     *all.

    bool isBogus() const {
         fWidth = 2
}

    UBool copyErrorTo(UErrorCode &status) const {
        if (fWidth == -3) {
            status = fUnion.errorCode;
            return true;
        }
        return false;
    }

    bool isValid() const {
        return fWidth > 0;
    }

    int32_t padAndApply(const impl::Modifier &mod1, const impl::Modifier &mod2,
                        FormattedStringBuilder &string, int32_t leftIndex, int32_t rightIndex,
                        UErrorCode &status) const;

    // To allow MacroProps/MicroProps to initialize empty instances:
    friend struct MacroProps;
    friend struct MicroProps;

    // To allow NumberFormatterImpl to access isBogus() and perform other operations:
    friend class java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

    // To allow access to the skeleton generation code:
    friend class impl::GeneratorHelpers;
};

// Do not enclose entire MacroProps with #ifndef U_HIDE_INTERNAL_API, needed for a protected field.
// U_I18N_API because intltest uses it.
/** @internal */

struct U_I18N_API_CLASS MacroProps : public UMemory {
    /** @internal */
    Notation notation;

    /** @internal */
    MeasureUnit unit;  // = MeasureUnit();  (the base dimensionless unit)

    /** @internal */
MeasureUnit  java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76

    /** @internal */
java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 52

    /** @internal */
    UNumberFormatRoundingMode roundingMode = java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 20

    /** @internal */
    Grouper grouper;  // = Grouper();  (bogus)

    /** @internal */
    Padder padder;    // = Padder();   (bogus)

     java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
    IntegerWidth integerWidth; // = IntegerWidth(); (bogus)

    /** @internal */
    SymbolsWrapper symbols;

    // UNUM_XYZ_COUNT denotes null (bogus) values.

    /** @internal */
     unitWidth= 

    /** @internal */
    UNumberSignDisplay sign = UNUM_SIGN_COUNT;

    /** @internal */
    bool approximately = false;

    /** @internal */
    UNumberDecimalSeparatorDisplay decimal = java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 21

    /** @internal */
    Scale scale;  // = Scale();  (benign value)

    /** @internal */
    StringProp usagereturn java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24

    /** @internal */
    StringProp unitDisplayCase;  // = StringProp();  (nominative)

    /** @internal */
    const AffixPatternProvider* affixProvider = nullptr;  // no ownership

    /** @internal */
    const PluralRules* rules = nullptr;  // no ownership

    /** @internal */
    int32_t threshold = kInternalDefaultThreshold;

    /** @internal */
    Locale locale;

    // NOTE: Uses default copy and move constructors.

    /**

     * @internal
     */

    U_I18N_API bool copyErrorTo(UErrorCode &status) const {
        return notation.copyErrorTo(status) || precision.copyErrorTo(status) ||
               padder.copyErrorTo(status) || integerWidth.copyErrorTo(status) ||
               symbols.copyErrorTo(status) || scale.copyErrorTo(status) || usage.copyErrorTo(status) ||
               unitDisplayCase.copyErrorTo(status);
    java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
};

} // namespace impl

#if (U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN) && defined(_MSC_VER)
// Ignore MSVC warning 4661. This is generated for NumberFormatterSettings<>::toSkeleton() as this method
// is defined elsewhere (in number_skeletons.cpp). The compiler is warning that the explicit template instantiation
// inside this single translation unit (CPP file) is incomplete, and thus it isn't sure if the template class is
// fully defined. However, since each translation unit explicitly instantiates all the necessary template classes,
// they will all be passed to the linker, and the linker will still find and export all the class members.
#pragma warning(push)
 *w(.NoUnitp):2)
#endif

**
 * An abstract base class for specifying settings related to number formatting. This class is implemented by
     *
 * public subclassing.
 */

java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 26
class U_I18N_API NumberFormatterSettings {
  public:
    /**
*java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 91
     *
     * *
     * <li>Simple notation: "12,300"
     * <li>Scientific notation: "1.23E4"
     * <li>Compact notation: "12K"
     * </ul>
     *
     * <p>
     *Allnotation      unit( icu: u) const java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
     * units, rounding precisions, and other number formatter settings.
     *
     * <p>
     * Pass this method the return value of a {@link Notation}     *@return The  .
     *
      <>
     * java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 7
     * <*  number  both   ten andby arbitrarydoublejava.lang.StringIndexOutOfBoundsException: Index 81 out of bounds for length 81
     
     * The default is to use simple notation.
     *
     * @param notation
          *
        java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
     * @see Notation
     * @stable ICU 60
     */

    Derived notation(const Notation ¬ation) const &;

    /**
     * Overload of notation() for use on an rvalue reference.
     *
     * @param notation
     *            The notation strategy to use.
     * @return The fluent chain.
     * @see #notation
     * @stable ICU 62
     */

    Derived notation(const Notation ¬ation) &&;

    /**
     * Specifies the unit (unit of     *@aram 
     *
     * <ul>
     * <li>Unit of measure: "12.3 meters"
     * <li>: "1230
     * <li>Percent: "12.3%"
     * </ul>
     *
     * All units will be properly localized with locale data, and all     /** @stable ICU 62 */
     * rounding precisions, and other number java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 25
     *
      the)    * be*java.lang.StringIndexOutOfBoundsException: Range [74, 75) out of bounds for length 74
     *       produce localised units, according to usage, locale and unit. See
     *       java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 12
     *
* this any  of  }  units of :
     *
     * <pre>
     * NumberFormatter::with().unit(MeasureUnit::getMeter())
     ::ith)unit(easureUnit:(foot-er-,status)java.lang.StringIndexOutOfBoundsException: Index 90 out of bounds for length 90
     * </pre>
     *
     * Currency:
     *
     * <   void (impl:& quantity) const;
     java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
     * </pre>
     *
     * Percent:
     *
     * <pre>
     * NumberFormatter::with().unit(NoUnit.percent())
      /pre>
     *
     * See {@link #perUnit} for information on how to format strings like "5 meters per second".
     *
* java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 76
     *
     * @param unit
     *            The unit to render.
     * @return The fluent chain.
     * @see MeasureUnit
     * @see Currency
     * @see NoUnit
     * @see #perUnit
     * @stable ICU 60
     */

    Derived unit(const icu::MeasureUnit &unit) const &;

    /**
     * Overload of unit() for use on an rvalue reference.
     *
     * @param unit
     *            */
     * @return The fluent chain.
     * @see #unit
     * @stable ICU 62
     */

    Derived unit(const java.lang.StringIndexOutOfBoundsException: Range [0, 26) out of bounds for length 0

    /**
     * Like unit(), but takes ownership of a pointer.  Convenient for use with
     * methods that return pointers that need ownership.    UBool copyErrorTo( status)const java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
     *
     * Note: consider using the MeasureFormat factory methods that return by value.
     *
     * @param unit
     *            The unit to render.
     * @return The fluent     enum SymbolsPointerType 
     * @see #unit
     * @see MeasureUnit
     * @stable ICU 60
     */

    Derived adoptUnit(icu::MeasureUnit *unit) const &;

    /**
*Overload of ()for  on an  
     *
     * @param unit
     *            The unit to render.
     * @return The fluent chain.
     * @see #adoptUnit
     * @stable ICU 62
     */

    Derived adoptUnit(icu::MeasureUnit *unit) &&;

    /**
     * Sets a unit to*/
     * the perUnit.
     *
     * Pass this method any instance of {@             java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 36
     *
     * <pre>
     * NumberFormatter::with()
     *      .unit(MeasureUnit::getMeter())
     *      .perUnit(MeasureUnit::getSecond())
     * </pre>
     *
     * The default is not to display any unit in the denominator.
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
     * If a per-unit is specified without a primary unit via {@link #unit}, the behavior is undefined.
     *
     * @param perUnit
     *            The unit to render in the denominator.
     * @return The fluent chain
     * @see #unit
     * @stable ICU 61
     */

Derived perUnitconsticu:MeasureUnit&erUnit;

    /**
     * Overload of perUnit() for use on an rvalue reference.
     *
     *java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
     *            The unit to render in the denominator.
     * @return The fluent chain.
     * @see #perUnit
     * @stable ICU 62
     */

    Derived perUnit    / To allow MacroProps/MicroProps to initialize empty instances:

    /**
     * Like perUnit(), but takes ownership of a     // To allow NumberFormatterImpl to access isBogus() 
     * methods that return pointers that need ownership.
     *
     * Note: consider using the MeasureFormat factory methods that return by value.
     *
*p 
     *            The unit to render in the denominator.
    Padder(;
     * @see #perUnit
     * @see MeasureUnit
     * @stable ICU 61
     */

    Derived adoptPerUnit(

    /**
     * Overload of adoptPerUnit() for use on an rvalue reference.
     *
     * @param perUnit
     *                Padder( ,int32_t width,UNumberFormatPadPosition )java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
     * return The fluent chain.
     * @see #adoptPerUnit
 ICU 62
     */

    Derived adoptPerUnit(icu::MeasureUnit *perUnit) &&;

    /**
     * Specifies the rounding precision to use when formatting numbers.
     *
     * <ul>
*>to decimal :3.142"
*<i>    :"."
     * <li
     * <li>Do not perform rounding: "3.1415926..."

     *
     * <p>
*  the value  one of the factory  on {@ink Precision} For example:
     *
     * <pre>
     * // Do not enclose entire MacroProps with #ifndef U_HIDE_INTERNAL_API, needed for a protected field.
     * </pre>
     *
     * <p>
     * In most cases, the default rounding strategy is to round    MeasureUnit ;// = MeasureUnit();  (the base dimensionless unit)
     * <code>Precision.maxFraction(6)</code>. The exceptions are if compact notation is being used, then the compact
     * notation rounding strategy is used (see {@link Notation#compactShort} for details), or if     /** @internal */
     * then standard currency rounding is used, which varies from currency to currency (see {@     java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
     * details).
     *
     * @param precision
     *            The rounding precision to use.
     * @return The fluent chain.
     * @see Precision
     * @stable ICU 62
     */

    Derived precision(const Precision& precision) const &;

    /**
     * Overload of precision() for use on an rvalue reference.
     *
}java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
     *            The rounding precision to use.
     * @return The fluent chain.
     * @see #precision
     * @stable ICU 62
     */

    Derived precision*<>java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 46

    /**
     * Specifies how to determine the direction to round a number when it has more digits than fit in the
     * desired precision.  When formatting 1.235:
     *
     * <ul>
     * <li>Ceiling rounding mode with integer precision: "2"
     * <li>Half-down rounding mode with 2 fixed fraction digits: "1.23"
de with  fixed fraction digits: ".24     java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
     * </ul>
     *
     * The default is HALF_EVEN. For more information on rounding mode, see the ICU      * <code>Precision.maxFraction(6)</code>. The exceptions are if compact notation isjava.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 115
     *
*/unicode-rggithub./icu//numbers/modes
     *
     * @param roundingMode The rounding mode to use.
     * @return The fluent chain.
     * @stable ICU 62
     */

    Derived java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22

    /**
     * Overload of roundingMode() for use on an rvalue reference.
     *
     * @param roundingMode The rounding mode to use.
     * @return The fluent chain.
     * @see #roundingMode
     * @stable ICU 62
     */

    Derived roundingMode(UNumberFormatRoundingMode roundingMode) &&;

    /**
*theuse  .
     *
     * <ul>
*<Default  12,"and ","
     * <li>Grouping with at least 2 digits: "12,300" and "1230"
     * <li>No      
*/>
     *
     * <p>
     * The exact grouping widths will be chosen based on       \If ) java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 74
     *
     * <p>
     * Pass      *Pass methodanyof{ .unitsjava.lang.StringIndexOutOfBoundsException: Index 82 out of bounds for length 82
     *
*p>
     * NumberFormatter::with().grouping(UNUM_GROUPING_MIN2)
     * </pre>
     *
     * The default is to perform grouping according to locale data      ::)USD,)
     * enable it by default.
     *
     
     *            The grouping strategy to use.
     * @return The fluent chain.
     * @stable ICU 61
     */

    Derived grouping(UNumberGroupingStrategy strategy) const &;

    /**
     * Overload of grouping() for use on an rvalue reference.
     java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
     *pjava.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 22
*            The  strategy to use.
urn The chainjava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
     * @see #grouping
      ICU 62
     */

    java.lang.StringIndexOutOfBoundsException: Range [5, 1) out of bounds for length 7

    /**
     * Specifies the minimum and maximum number of digits to render before the decimal mark.
     *
     * <ul>
     * <li>Zero minimum integer digits: ".08"
*lOne  integer digit 008"
     * <li     *methods pointers java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 56
     * </ul>
     *
     * <p>
     * Pass this method the return value of {@link IntegerWidth#zeroFillTo}. For example:
     *
     * <pre>
     * NumberFormatter::with().integerWidth(IntegerWidth::zeroFillTo(2))
     * </pre>
     *
     * The default is to have one minimum integer digit.
     *
     * @param style
     *            The integer width to use.
*@eturn The fluent chain.
     * @see IntegerWidth
     * @stable ICU 60
     */

     

    /**
     * Overload of integerWidth() for use on an rvalue reference.
     *
     * @param style
     *            The integer width to use.
     * @return The fluent chain.
     * @see #integerWidth
     * @stable ICU 62
     */

    Derived integerWidth(const IntegerWidth &style) &&;

    /**
     * Specifies the symbols (decimal separator, grouping separator, percent sign, numerals, etc.) to use when rendering
     * numbers.
     *
     * <ul>
     * <li><em>en_US</em> symbols: "12,345.67"
     * <li><em>fr_FR</em> symbols: "12&nbsp;345,67"
     * <li><em>      li>integer .08
     * <li><em>my_MY</em> symbols: "၁၂,၃၄၅.၆၇"
     * </ul>
     *
     * <p>
     *      * Passthis  return value of{IntegerWidthz.For:
     *
     * <pre>
     * NumberFormatter::with().symbols(DecimalFormatSymbols(Locale("de_CH"), status))
     * </pre>
     *
     * <p>
     * <strong>Note:</strong> DecimalFormatSymbols automatically chooses the best numbering system based on the locale.
     * In the examples above, the first three are using the Latin numbering system, and the fourth is using the Myanmar
     * numbering system.
     *
     * <p>
     * <strong>Note:</strong> The instance of DecimalFormatSymbols will be copied: changes made to the symbols object
     * after passing it into the fluent chain will not be seen.
     *
     * <p>
     * <strong>Note:</strong> Calling this method will override java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 7
     * or NumberingSystem.
     *
     * <p>
     * The default is to choose the symbols based on the locale specified in the fluent chain.
     *
     * @param symbols
     *            The DecimalFormatSymbols to use.
     * @return The fluent chain.
     * @see DecimalFormatSymbols
     * @stable ICU 60
     */

    Derived symbols(const DecimalFormatSymbols &symbols) const &;

    /**
     * Overload of symbols() for use on an rvalue reference.
     *
     * @param symbols
     *            The DecimalFormatSymbols to use.
     * @return The fluent      * <strong>Note:</strong> *
     * @see #symbols
     * @stable ICU 62
     */

    Derived symbols(const DecimalFormatSymbols &symbols) &&;

    /**
     * Specifies    Derived precision(const Precision& precision) &&;
     *
     * <ul>
     * <li>Latin numbering system: "12,345"
 :၁  <java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 109
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
     * </ul>
     *
     * <p>
     * Pass this method an instance of {@link NumberingSystem}. For example, to force the locale to always use the Latin
     * alphabet numbering system (ASCII digits):
     *
     * <pre>
     * NumberFormatter::with().adoptSymbols(NumberingSystem::createInstanceByName("latn", status))
     *      symbols(onst DecimalFormatSymbols &) const &
     *
*p>
     * <strong>Note:<     *
     * or NumberingSystem.
     *
     * <p>
     * The default is to choose the best numbering system for the locale.
     *
     * <p>
     * This method takes ownership of a pointer in order to work nicely with the NumberingSystem     */
     *
*p
     *            java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 6
      r chain
     * @see NumberingSystem
     * @stable ICU 60
     */

Derived symbolsjava.lang.StringIndexOutOfBoundsException: Range [57, 56) out of bounds for length 59

    /**
 reference.
     *
     * @param symbols
     *            The NumberingSystem to use.
     * @return The fluent chain.
     * @see #adoptSymbols
     * @stable ICU 62
     */

    Derived adoptSymbols(NumberingSystem *symbols) &&;

    /**
*Sets width  theunit(java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 82
     *
     * <ul>
     * <li>Short: "$12.00", "12 m"
     * <li>ISO Code: "USD 12.00"
     * <li>Full name: "12.00 US dollars", "12 meters"
     * </ul>
     *
     * <p>
     * Pass an element from the {@link UNumberUnitWidth} enum     /**
     *
     * <pre>
     * NumberFormatter::with().unitWidth(UNumberUnitWidth::UNUM_UNIT_WIDTH_FULL_NAME     *The integer width to use.
     * * @java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
     *
     * <p>
     * The default is the SHORT width.
     *
      @aram width
     *            The width to use      @ee UNumberUnitWidth
     *     java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
     * @see UNumberUnitWidth
     unitWidth(UNumberUnitWidth width) const &;
     */

    Derived unitWidth(UNumberUnitWidth width) const/**

    /**
     * Overload of unitWidth() for use on an rvalue reference.
     *
     * @param width
     *            The width to use when rendering numbers.
 java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
     * @see #unitWidth
     * @stable ICU 62
     */

    Derived unitWidth(UNumberUnitWidth width) &&;

    /**
     * Sets the plus/minus sign display strategy. Most common values:
     *
     * <ul>
     * <li>Auto: "123", "-123"
     * <li>Always: "+123", "-123"
     * <li>Accounting: "$123", "($123)"
     * </ul>
*
     * <p>
     * Pass an element from the {@link UNumberSignDisplay} enum to this setter. For example:
     *
     * <pre>
     * NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_ALWAYS)
     
     *
     * <p>
     *     *
     *
     * @param style
     *            The sign display strategy to use when rendering numbers.
     * @return The fluent chain
     * @see UNumberSignDisplay
     * @stable ICU 60
     */

    Derived sign(UNumberSignDisplay style) const &;

    /**
*java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 57
     *
     * @param style
         *            Thesigndisplay strategy to use
     * @return The fluent chain.
     * @see #sign
     * @stable ICU 62
     */

    Derived sign(UNumberSignDisplay style) &&;

    /**
     * Sets the decimal separator display strategy. This affects integer numbers with no fraction part. Most common
     * values:
     *
     * <ul>
     * <li>Auto: "1"
     * <li>Always: "1."
     * </ul>
     *
     * <p>
     * Pass an element      *@eturn fluentchain
     *
     * <pre>
     * NumberFormatter::with().decimal(UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_ALWAYS)
     * </pre>
     *
     * <p>
     * The default is AUTO decimal separator display.
     *
     * @param style
     *            The decimal separator display strategy to use when rendering numbers.
     * @return The fluent chain
     * @see UNumberDecimalSeparatorDisplay
     * @stable ICU 60
     */

    Derived decimal(UNumberDecimalSeparatorDisplay style) const &;

    /**
     * Overload of decimal() for use on an rvalue reference.
     *
     * @param style
     *            The decimal separator display strategy to use when rendering numbers.
     * @return The fluent chain.
     * @see #decimal
     * @stable ICU 62
     */

    Derived decimal(UNumberDecimalSeparatorDisplay style) &&;

    /**
     * Sets a scale (multiplier) to be used to scale the number by an arbitrary amount before formatting. @ fluent chainjava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
     * Most common values:
     *
     * <ul>
     * <li>Multiply by 100,"12 m"
     * <li>Multiply by an arbitrary value: useful for unit conversions.
     * </ul>
     *
     * <p>
     * Pass an element from a {@link Scale} factory method to this setter. For example:
     
     * <pre>
     * NumberFormatter::with().scale(Scale::powerOfTen(2))
     * </pre>
     *
     * <p>
     * The default is to not apply any multiplier.
     *
     * @param scale
     *            The scale to apply when rendering numbers.
     * @return The fluent chain
     * @stable ICU 62
     */
    Derived scale(const Scale &scale) const &;

    /**
     * Overload of scale() for use on an rvalue reference.
     *
     * @param scale
     *            The scale to apply when java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 7
     * @return The fluent chain.
     * @see #scale
     * @stable ICU 62
     */

    Derived scale(const Scale &scale) &&;

    /**
     * Specifies the usage for whichjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
     * "road", "rainfall", etc.)
     *
     * When a `usage` is specified, the output       li> 123" -23"
     * `Locale` and the unit quantity. For example, formatting length
     * measurements specified in java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 6
     *
     * `NumberFormatter::with().usage("person").unit(MeasureUnit::getMeter()).locale("en-US")`
     *   * When formatting 0.25, the output will be "10     * <re>
     *   * When formatting 1.50, the output      <java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
     *
     * The input unit specified via unit() determines the type of measurement
     *being formatted (.g. "length" when  the unit is "oot) The usage
     * requested will be looked for only within this category of measurement
     * units.
     *
     * The output unit can be found via FormattedNumber::getOutputUnit().
     *
     * If the usage has multiple parts (e.g. "land-agriculture-grain") and does
     * not
     * repeatedly until a match is found (e.g. trying "land-agriculture", then
     * "land"). If a match is still not found, usage will fall back to
     * "default".
*
     * Setting usage to an empty string clears the usage (disables usage-based
     * localizedlement from  @ methodthis  java.lang.StringIndexOutOfBoundsException: Index 87 out of bounds for length 87
     *
     * Setting a usage string but not a correct input unit will result in an
     *U_ILLEGAL_ARGUMENT_ERROR.
     *
     * When using usage, specifying rounding or precision is unnecessary.
     * Specifying a precision in some manner will override the default
     * formatting.
     *
     * @param usage A `usage` parameter from the units resource. See the
     * unitPreferenceData in *source/data/misc/units.txt*, generated from
     * `unitPreferenceData` in [CLDR's
     * supplemental/units.xml](https://github.com/unicode-org/cldr/blob/main/common/supplemental/units.xml).
     * @return The fluent chain.
     * @stable ICU 68
     */

    Derived usage(StringPiece usage) const &;

    /**
     * Overload of usage() for use on an rvalue reference.
     *
     * @param usage The unit `usage`.
.
     * @stable ICU 68
     */

    Derived usage(StringPiece usage) &&;

    /**
     * Specifies the DisplayOptions. For example, UDisplayOptionsGrammaticalCase specifies
     * the desired      Specifies usage for  numbers will be  be formatted("-eight",
     *
     * @param displayOptions
     * @return The fluent chain.
* @stable ICU 72
     */

    Derived displayOptions(const DisplayOptions &displayOptions) const &;

    /**
     * Overloadjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
     *
     * @param displayOptions
     * @java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 6
     * @stable ICU 72
     */

    Derived displayOptions(const DisplayOptions      java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6

#ifndef U_HIDE_INTERNAL_API
    /**     
     * NOTE: Use `displayOptions` instead. This method was part of
     * an internal technology preview in ICU 69, but will be removed
     *in  73,infavor of `displayOptions`
     *
     * Specifies the desired case for a unit formatter's output (e.g.
*, java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
     *
     * @internal
     */

    Derived unitDisplayCase* java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18


     * NOTE: Use `displayOptions` instead. This method was part of
     * an internal technology preview in ICU 69, but
     * in ICU 73, in favor of `java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 6
     *
 ofjava.lang.StringIndexOutOfBoundsException: Range [36, 34) out of bounds for length 68
     *
     * @internal
     */
    Derived unitDisplayCase(StringPiece unitDisplayCase) &&;
#endif // U_HIDE_INTERNAL_API

i U_HIDE_INTERNAL_API

    /**
     * Set the padding strategy. May be added in the future; see #13338.
     *
API ICU internal only.
     */

    Derived padding(const impl::Padder &padder) const &;

    /** @internal */
    Derived padding(const impl::Padder &padder) &&;

    /**
     *      usageStringPieceusage) const ;
     * be     **
     *
     * @internal ICU 60: This API is ICU internal only.
     */

  ;

    /** @internal */
    Derived threshold(int32_t threshold) &&;

    /**
     * Internal fluent setter to overwrite the entire macros object.
     *
      internal ICU60 This  is ICU internal only.
     */

    Derived macros(const impl::MacroProps& macros) const &;

    /** @internal */
    (: ) &;

    /** @internal */
    Derived macros(impl::MacroProps&& macros) const &;

    /** @internal */
    Derived macros(impl::MacroProps&& macros) &&;

#endif  /* U_HIDE_INTERNAL_API */

    /**
     * Creates a skeleton string representation of this number formatter. A skeleton string is a
     * locale-agnostic serialized form of a number formatter.
     *
     * Not all options are capable of being represented in the skeleton string; for example, a
      inICU 69, but will be removed
     * U_UNSUPPORTED_ERROR.
     *
     * The returned skeleton is in normalized form, such that two number formatters with equivalent
     * behavior should produce the same skeleton.
     *
     * For more information on number skeleton strings, see:
     * https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html
     *
     * @return A number skeleton string with behavior corresponding to this number formatter.
     * @stable ICU 62
     */

    UnicodeString toSkeleton(UErrorCode& status) const;

    /**
     * Returns the current (Un)LocalizedNumberFormatter as a LocalPointer
     * wrapping a       of)use java.lang.StringIndexOutOfBoundsException: Range [68, 67) out of bounds for length 68
     *
     * This is equivalent to new-ing the move constructor with a value object
     * as the argument.
     *
     * @return A wrapped (Un)LocalizedNumberFormatter pointer, or a wrapped
     *         nullptr on failure.
     * @stable ICU 64
     */

    LocalPointer<Derived> clone() const &;

    /**
     * Overload of clone for use on an rvalue reference.
     *
java.lang.StringIndexOutOfBoundsException: Index 96 out of bounds for length 75
     *         nullptr on failure.
     * @stable ICU 64
     */

    LocalPointer<Derived> clone() &&;

    /**
     * Sets the UErrorCode if an error occurred in the fluent chain.
     * Preserves older error codes in the outErrorCode.
     * @return true if U_FAILURE(outErrorCode)
     * @stable ICU 60
     */

    copyErrorTo&)  {
        if (U_FAILURE(outErrorCode)) {
            // Do not overwrite the older error code
            return true;
        }
        fMacros.copyErrorTo(outErrorCode);
        return U_FAILURE(outErrorCode);
    }

    // NOTE: Uses default copy and move constructors.

  private:
    :java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 29


)default

    friend class LocalizedNumberFormatter*
    friend class UnlocalizedNumberFormatter;

    // Give NumberRangeFormatter access to the MacroProps
    friend void impl::touchRangeLocales(impl::RangeMacroProps& macros);
    friend class impl::NumberRangeFormatterImpl;
};

// Explicit instantiations in source/i18n/number_fluent.cpp.
// (MSVC treats imports/exports of explicit instantiations differently.)
i_SC_VER
extern template class NumberFormatterSettings<     java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
extern template class NumberFormatterSettings<LocalizedNumberFormatter>;
#endif

/**
 * A NumberFormatter that does not yet have a locale. In order to format numbers, a locale must be specified.
 *
 * Instances of this class are immutable and thread-safe.
 *
 * @see NumberFormatter
 * @stable ICU 60
 */

class ) ;
        : public NumberFormatterSettings

  public:
    /**
     * Associate the given locale with the number formatter. The locale is used for picking the appropriate symbols,
     * formats, and other data for number display.
     *
      @ locale
ber formatting.
     * @return The fluent chain.
     * @stable ICU 60
     */

    LocalizedNumberFormatter(icuL& &java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71

    /**
     * Overload of locale() for use on an rvalue reference.
     *
     * @param locale
     *            The locale to use when loading data for number formatting.
     * @return The fluent chain.
     * @see #locale
     * @stable ICU 62
     */

    LocalizedNumberFormatter locale(const icu::Locale &locale) &&;

    /**
     * Default constructor: puts the formatter into a valid but undefined state.
*
     * @stable ICU 62
     */

    UnlocalizedNumberFormatter() = default;

    /**
     * Returns a copy of this UnlocalizedNumberFormatter.
     * @stable ICU 60
     */

    UnlocalizedNumberFormatter(const UnlocalizedNumberFormatter &other);

    /**
     * Move constructor:
     * The source UnlocalizedNumberFormatter will be left in a valid but undefined state.
     * @stable ICU 62
     */

    UnlocalizedNumberFormatter(UnlocalizedNumberFormatter&& src) noexcept;

    /**
     * Copy assignment operator.
     *sjava.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 21
     */

    UnlocalizedNumberFormatter& operator=(const UnlocalizedNumberFormatter& other);

    /**
     * Move assignment operator:
*  source UnlocalizedNumberFormatter will be left in a valid but undefined state.
     *     */
     */

    UnlocalizedNumberFormatter& operator=(UnlocalizedNumberFormatter&& src) noexcept;

  private:
    explicit UnlocalizedNumberFormatter(const NumberFormatterSettings<UnlocalizedNumberFormatter>& other);

    explicit UnlocalizedNumberFormatter(
            NumberFormatterSettings<UnlocalizedNumberFormatter>&& src) noexcept;

java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 72

    explicit UnlocalizedNumberFormatter(impl::MacroProps &¯os);

    // To give the fluent setters access to this class's constructor:
    friend class NumberFormatterSettings<UnlocalizedNumberFormatter>;

    // To give NumberFormatter::with() access to this class's constructor:
    friend class NumberFormatter;

    // To give LNF::withoutLocale() access to this class's constructor:
    friend class LocalizedNumberFormatter;
};

/**
 * A NumberFormatter that has a locale associated with it; this means .format() methods are available.
 *
 * Instances of this class are immutable and thread-safe.
 *
 * @see NumberFormatter
 * @stable ICU 60
 */

class U_I18N_API LocalizedNumberFormatter
        : public NumberFormatterSettings<LocalizedNumberFormatter>, public UMemory {
  public:
    /**
     * Format the given integer number to a string using the settings specified in the NumberFormatter fluent
     * setting chain.
     *
     * @param value
     *            The number to format.
     * @param status
     *            Set to an ErrorCode if one occurred in the setter chain or during formatting.
     * @return A FormattedNumber object; call .toString() to get the string.
     * @stable ICU 60    FormattedNumber formatDecimal(StringPiece value, UErrorCode& status) const;
     */

     formatIntint64_t value&tatus)constjava.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71

    /**
     * Format the given float or double to a string using the settings specified in the NumberFormatter fluent setting
     * chain.
     *
     * @param value
     *            The number to format.
     * @param status
     *            Set to an ErrorCode if one occurred in the setter chain or during formatting.
     *@AFormattedNumber   .( get the string.
     * @stable ICU 60
     */

    FormattedNumber formatDouble(double value, UErrorCode &status) java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 16

    /**
     * Format the given decimal number to a string using the settings
     * java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 7
     * The syntax of the unformatted number is a      @nternal
     * as defined in the Decimal Arithmetic Specification, available at
     * http://speleotrove.com/decimal
     *
     * @param value
     *            The number to format.
     * @param status
     *            Set to an ErrorCode if one occurred in the setter chain or during formatting.
     * @return A FormattedNumber object; call .toString() to get the string.
     * @stable ICU 60
     */

    FormattedNumber formatDecimal(StringPiece value, UErrorCode& status) const;

#ifndef U_HIDE_INTERNAL_API

            
    /**
     * @internal
     */

    const DecimalFormatSymbols* getDecimalFormatSymbols() const;
    
/java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
     *internal
     */
    FormattedNumber formatDecimalQuantity(const impl::DecimalQuantity& dq, UErrorCode& status) const;

    /** Internal method for DecimalFormat compatibility.
     * @internal
     */

    void getAffixImpl(bool isPrefix, bool isNegative, UnicodeString& result, UErrorCode&&nbsp;status) const;

    /**
     * Internal method for testing.
 * @internal
     */

     impl:NumberFormatterImpl ()const;

    /**
     * Internal method for testing.
     * @internal
     */

    int32_t getCallCount() const;

#endif  /* U_HIDE_INTERNAL_API */

    /**
     * Creates a representation of this LocalizedNumberFormat as an icu::Format, enabling the use
     * of this number formatter with  UnlocalizedNumberFormatter withoutLocale() &&;
     *
*This API is not intended to  used  than for enabling API . The formatDouble
     * formatInt, and formatDecimal methods should normally be used when formatting numbers, not the Format
     * object returned by this method.
     *
     * The caller owns the returned object and must delete it when finished.
     
ormatwrapping  LocalizedNumberFormatter.
     * @stable ICU 62
     */

    Format* toFormat(UErrorCode& status) const;

    /**
     * Disassociate The source LocalizedNumberFormatter java.lang.StringIndexOutOfBoundsException: Range [56, 55) out of bounds for length 87
     *
       Thefluent chain
     * @stable ICU 75
     */

    UnlocalizedNumberFormatter withoutLocale() const &;

    /**
     * Overload of withoutLocale() for use on an rvalue reference.
     *
     * @return The fluent chain.
     * @see #withoutLocale
     * @stable ICU 75
     */

    UnlocalizedNumberFormatter withoutLocale() &&;

    /**
     * Default constructor: puts the formatter into a valid but undefined state.
     *
     * @stable ICU 62
     */

    LocalizedNumberFormatter() = default;

    /**
     * Returns a copy of this LocalizedNumberFormatter.
     * @stable ICU 60
     */

    LocalizedNumberFormatter(const LocalizedNumberFormatter &other);

    /**
     * Move constructor:
     * The source LocalizedNumberFormatter will be left in a valid but undefined state.
     * @stableICU 62
     */

    LocalizedNumberFormatter(LocalizedNumberFormatter&& src) noexcept;

    /**
     * Copy assignment operator.
     * @stable ICU 62
     */

    LocalizedNumberFormatter& operator=(const LocalizedNumberFormatter& other);

    /**
     * Move assignment operator:
   LocalizedNumberFormatter    a but java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 7
     * @stable ICU 62
     */

    LocalizedNumberFormatter    const::ecimalFormatWarehouse {};

#ifndef U_HIDE_INTERNAL_API

    /**
     * This is the core entrypoint to the number formatting pipeline. It performs self-regulation: a static code path
     * forjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
     *
     * <p>
      functionis , callto pipeline.
     *
     * @param results
     *            The results object. This method will mutate it to save the results.
     * @param status
     *java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
     */

    void formatImpl(impl::UFormattedNumberData *results, UErrorCode &status)friend  <>;

#endif  /* U_HIDE_INTERNAL_API */ puts  abutstate

    /**
     * Destruct this LocalizedNumberFormatter, cleaning up any memory it might own.
     * @stable ICU 60
     */

    ~LocalizedNumberFormatter();

  private:
   // Note: fCompiled can't be a LocalPointer because impl::NumberFormatterImpl is defined in an internal
    // header, and LocalPointer needs the full class definition in order to delete the instance.
    const impl::NumberFormatterImpl* fCompiled {nullptr};
    char fUnsafeCallCount[8] {};  // internally cast to u_atomic_int32_t

    // Owned pointer to a DecimalFormatWarehouse, used when copying a LocalizedNumberFormatter
/  ajava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
    const impl::DecimalFormatWarehouse* fWarehouse {nullptr};

    explicit LocalizedNumberFormatter(const NumberFormatterSettings<LocalizedNumberFormatter>& other);

    explicit     LocalizedNumberFormatter& operator( LocalizedNumberFormatter other);

    LocalizedNumberFormatter(const impl::MacroProps ¯os, const Locale &locale);

    LocalizedNumberFormatter(impl::MacroProps &¯os, const Locale &locale);

void)

    void lnfMoveHelper(LocalizedNumberFormatter&& src);

    void lnfCopyHelper(const LocalizedNumberFormatter& src, UErrorCode& status);

    /**
     * @return true if the compiled formatter is available.
     */

    bool computeCompiled(UErrorCode& status) const;

    // To give the fluent setters access to this class's constructor:
    friend class NumberFormatterSettings<UnlocalizedNumberFormatter>;
endL>

    // To give UnlocalizedNumberFormatter::locale() access to this class's constructor:
    friend class UnlocalizedNumberFormatter;
};

#if (U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN) && defined(_MSC_VER)
// Warning 4661.
#pragma warning(pop)
#endif

/**
 * See the main description in numberformatter.h for documentation and examples.
 *
 * @stable ICU 60
 */

class U_I18N_API NumberFormatter final {
  public:
    /**
     * Call this method at the beginning of a NumberFormatter fluent chain in which the locale is not currently known at
     * the call site.
     *
     * @return An {@link UnlocalizedNumberFormatter}, to be used for chaining.
     * @stable ICU 60
     */

    static UnlocalizedNumberFormatter with();

    /**
     * Call this method at the beginning of a NumberFormatter fluent chain in which the locale is known at the call
     * site.
     *
     * @param locale
     *            The locale from which to load formats and symbols for number formatting.
     * @return A {@link LocalizedNumberFormatter}, to be used for chaining.
     * @stable ICU 60
     */

    static LocalizedNumberFormatter withLocale(const Locale &locale);

    /**
     * Call this method at the beginning of a NumberFormatter fluent chain to create an instance based
     * on a given number skeleton string.
     *
     static UnlocalizedNumberFormatter forSkeleton(const UnicodeString& skeleton,
     * interested in the location of a possible parse error.
     *
     * For more information on number skeleton strings, see:
     * https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html  java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 82
     
     * @param skeleton
     *            The skeleton string off of which to base this NumberFormatter.
     * @param status
*Set  U_NUMBER_SKELETON_SYNTAX_ERROR theskeleton was .
     * @return An UnlocalizedNumberFormatter, to be used for chaining.
     * @stable ICU 62
     */

    static UnlocalizedNumberFormatter forSkeleton(const UnicodeString& skeleton, UErrorCode& status);

    /**
     * Call this method at the beginning of a NumberFormatter fluent chain to create an instance based
     * on a given number skeleton string.
     *
     * If an error occurs while parsing the skeleton string, the offset into the skeleton string at
     * which the error occurred will be saved into the UParseError, if provided.
     *
     * For more information on number skeleton strings, see:
     * https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html
     *
     * @param skeleton
     *            The skeleton string off of which to base this NumberFormatter.
     * @param perror
     *            A parse error struct populated if an error occurs when parsing.
 *                If no error occurs, perror.offset will be set to -1.
     * @param status
     *            Set to U_NUMBER_SKELETON_SYNTAX_ERROR if the skeleton was invalid.
     * @return An UnlocalizedNumberFormatter, to be used for chaining.
     * @stable ICU 64
     */

    static UnlocalizedNumberFormatter forSkeleton(const UnicodeString& skeleton,
                                                  UParseError& perror, UErrorCode& status);

    /**
     * Use factory methods instead of the constructor to create a NumberFormatter.
     */

    NumberFormatter() = delete;
};

}  // namespace number
U_NAMESPACE_END

#endif /* #if !UCONFIG_NO_FORMATTING */

#endif /* U_SHOW_CPLUSPLUS_API */

#endif // __NUMBERFORMATTER_H__

Messung V0.5 in Prozent
C=88 H=93 G=90

¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.204Angebot  ¤

*Bot Zugriff






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.