code: private void resetActualRounding() {
          if (roundingIncrementICU != null) {
              BigDecimal byWidth = getMaximumFractionDigits() > 0 ?
                      BigDecimal.ONE.movePointLeft(getMaximumFractionDigits()) : BigDecimal.ONE;
              if (roundingIncrementICU.compareTo(byWidth) >= 0) {
                  actualRoundingIncrementICU = roundingIncrementICU;
              } else {
                  actualRoundingIncrementICU = byWidth.equals(BigDecimal.ONE) ? null : byWidth;
              }
          } else {
              if (roundingMode == BigDecimal.ROUND_HALF_EVEN || isScientificNotation()) {
                  // This rounding fix is irrelevant if mode is ROUND_HALF_EVEN as DigitList
                  // does ROUND_HALF_EVEN for us.  This rounding fix won't work at all for
                  // scientific notation.
                  actualRoundingIncrementICU = null;
              } else {
                  if (getMaximumFractionDigits() > 0) {
                      actualRoundingIncrementICU = BigDecimal.ONE.movePointLeft(getMaximumFractionDigits());
                  }  else {
                      actualRoundingIncrementICU = BigDecimal.ONE;
                  }
              }
          }
  
          if (actualRoundingIncrementICU == null) {
              setRoundingDouble(0.0d);
              actualRoundingIncrement = null;
          } else {
              setRoundingDouble(actualRoundingIncrementICU.doubleValue());
              actualRoundingIncrement = actualRoundingIncrementICU.toBigDecimal();
          }
      }
docs: /*
  Set roundingDouble, roundingDoubleReciprocal and actualRoundingIncrement
  based on rounding mode and width of fractional digits. Whenever setting affecting
  rounding mode, rounding increment and maximum width of fractional digits, then
  this method must be called.
  
  roundingIncrementICU is the field storing the custom rounding increment value,
  while actual rounding increment could be larger.