public NumberFormatContext(NumberFormatOptions<?> options, NumberFormatMode defaultFormatMode, int currencyDigits) { this.options = options; this.formatMode = orDefault(options.formatMode(), defaultFormatMode); this.currencyDigits = currencyDigits; }
public void set(NumberPattern pattern) { setPattern(pattern, -1, -1); }
BigDecimal n = value.amount(); boolean grouping = orDefault(options.grouping(), false); NumberFormatContext ctx = new NumberFormatContext(options, NumberFormatMode.DEFAULT); NumberPattern numberPattern = select(n, unitStandard); ctx.set(numberPattern); BigDecimal q = ctx.adjust(n); NumberOperands operands = new NumberOperands(q.toPlainString()); PluralCategory category = PLURAL_RULES.evalCardinal(bundleId.language(), operands); NumberFormattingUtils.format(q, number, params, false, grouping, ctx.minIntDigits(), numberPattern.format.primaryGroupingSize(), numberPattern.format.secondaryGroupingSize());
NumberFormatContext ctx = new NumberFormatContext(options, SIGNIFICANT_MAXFRAC, currencyDigits); int nDigits = integerDigits(n); int nDivisor = getDivisor_CURRENCY_SHORT(nDigits); ctx.setCompact(pattern, q1Digits, nDivisor); BigDecimal q2 = ctx.adjust(q1); int q2Digits = integerDigits(q2); ctx.setCompact(pattern, integerDigits(q1), divisor); q2 = ctx.adjust(q1);
case DECIMAL: NumberFormatContext ctx = new NumberFormatContext(options, NumberFormatMode.DEFAULT); NumberPattern pattern = select(n, decimalStandard); ctx.set(pattern); BigDecimal q = ctx.adjust(n); ctx.minIntDigits(), pattern.format.primaryGroupingSize(), pattern.format.secondaryGroupingSize()); case SHORT: NumberFormatContext ctx = new NumberFormatContext(options, NumberFormatMode.SIGNIFICANT); int nDigits = integerDigits(n); int nDivisor = getDivisor_DECIMAL_LONG(nDigits); ctx.setCompact(pattern, q1Digits, nDivisor); BigDecimal q2 = ctx.adjust(q1); int q2Digits = integerDigits(q2); ctx.setCompact(pattern, integerDigits(q1), divisor); q2 = ctx.adjust(q1);
/** * Set the pattern and initialize parameters based on the arguments, pattern and options settings. */ public void setPattern(NumberPattern pattern, int _maxSigDigits, int _minSigDigits) { Format format = pattern.format(); minIntDigits = orDefault(options.minimumIntegerDigits(), format.minimumIntegerDigits()); maxFracDigits = currencyDigits == -1 ? format.maximumFractionDigits() : currencyDigits; maxFracDigits = orDefault(options.maximumFractionDigits(), maxFracDigits); minFracDigits = currencyDigits == -1 ? format.minimumFractionDigits() : currencyDigits; minFracDigits = orDefault(options.minimumFractionDigits(), minFracDigits); boolean useSignificant = formatMode == SIGNIFICANT || formatMode == SIGNIFICANT_MAXFRAC; if (useSignificant) { maxSigDigits = orDefault(options.maximumSignificantDigits(), _maxSigDigits); minSigDigits = orDefault(options.minimumSignificantDigits(), _minSigDigits); } else { maxSigDigits = -1; minSigDigits = -1; } }
public void setCompact(NumberPattern pattern, int integerDigits, int divisor) { int _maxSigDigits = Math.max(pattern.format.minimumIntegerDigits, integerDigits) + 1; int _minSigDigits = 1; if (divisor == 0) { _maxSigDigits = integerDigits + 1; } setPattern(pattern, _maxSigDigits, _minSigDigits); }