+ double roundingIncrAdj = roundingIncrement;
+ if (!explicitMinMaxSig && PatternStringUtils::ignoreRoundingIncrement(&roundingIncrAdj, maxFrac)) {
+ precision = Precision::constructFraction(minFrac, maxFrac);
+ } else {
+ double delta = (roundingIncrement/roundingIncrAdj) - 1.0;
+ if (delta > 0.001 || delta < -0.001) {
+ roundingIncrAdj = roundingIncrement;
+ } else {
+ didAdjustRoundIncr = true;
+ }
+ if (explicitMinMaxSig) {
+ minSig = minSig < 1 ? 1 : minSig > kMaxIntFracSig ? kMaxIntFracSig : minSig;
+ maxSig = maxSig < 0 ? kMaxIntFracSig : maxSig < minSig ? minSig : maxSig > kMaxIntFracSig
+ ? kMaxIntFracSig : maxSig;
+ precision = Precision::constructIncrementSignificant(roundingIncrAdj, minSig, maxSig); // Apple rdar://52538227
+ } else {
+ precision = Precision::constructIncrement(roundingIncrAdj, minFrac);
+ }
+ }