diff options
Diffstat (limited to 'android_icu4j/src/main/java/android/icu/number/NumberPropertyMapper.java')
-rw-r--r-- | android_icu4j/src/main/java/android/icu/number/NumberPropertyMapper.java | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/android_icu4j/src/main/java/android/icu/number/NumberPropertyMapper.java b/android_icu4j/src/main/java/android/icu/number/NumberPropertyMapper.java index 1874a558f..81d635615 100644 --- a/android_icu4j/src/main/java/android/icu/number/NumberPropertyMapper.java +++ b/android_icu4j/src/main/java/android/icu/number/NumberPropertyMapper.java @@ -123,6 +123,21 @@ final class NumberPropertyMapper { MathContext mathContext = RoundingUtils.getMathContextOrUnlimited(properties); boolean explicitMinMaxFrac = minFrac != -1 || maxFrac != -1; boolean explicitMinMaxSig = minSig != -1 || maxSig != -1; + // Resolve min/max frac for currencies, required for the validation logic and for when minFrac or maxFrac was + // set (but not both) on a currency instance. + // NOTE: Increments are handled in "Rounder.constructCurrency()". + if (useCurrency) { + if (minFrac == -1 && maxFrac == -1) { + minFrac = currency.getDefaultFractionDigits(currencyUsage); + maxFrac = currency.getDefaultFractionDigits(currencyUsage); + } else if (minFrac == -1) { + minFrac = Math.min(maxFrac, currency.getDefaultFractionDigits(currencyUsage)); + } else if (maxFrac == -1) { + maxFrac = Math.max(minFrac, currency.getDefaultFractionDigits(currencyUsage)); + } else { + // No-op: user override for both minFrac and maxFrac + } + } // Validate min/max int/frac. // For backwards compatibility, minimum overrides maximum if the two conflict. // The following logic ensures that there is always a minimum of at least one digit. |