code: private StringBuffer subformat(StringBuffer result, FieldPosition fieldPosition,
                                     boolean isNegative, boolean isInteger, boolean parseAttr) {
          // NOTE: This isn't required anymore because DigitList takes care of this.
          //
          // // The negative of the exponent represents the number of leading // zeros
          // between the decimal and the first non-zero digit, for // a value < 0.1 (e.g.,
          // for 0.00123, -fExponent == 2). If this // is more than the maximum fraction
          // digits, then we have an underflow // for the printed representation. We
          // recognize this here and set // the DigitList representation to zero in this
          // situation.
          //
          // if (-digitList.decimalAt >= getMaximumFractionDigits())
          // {
          // digitList.count = 0;
          // }
  
  
  
          // Per bug 4147706, DecimalFormat must respect the sign of numbers which format as
          // zero. This allows sensible computations and preserves relations such as
          // signum(1/x) = signum(x), where x is +Infinity or -Infinity.  Prior to this fix,
          // we always formatted zero values as if they were positive. Liu 7/6/98.
          if (digitList.isZero()) {
              digitList.decimalAt = 0; // Normalize
          }
  
          int prefixLen = appendAffix(result, isNegative, true, fieldPosition, parseAttr);
  
          if (useExponentialNotation) {
              subformatExponential(result, fieldPosition, parseAttr);
          } else {
              subformatFixed(result, fieldPosition, isInteger, parseAttr);
          }
  
          int suffixLen = appendAffix(result, isNegative, false, fieldPosition, parseAttr);
          addPadding(result, fieldPosition, prefixLen, suffixLen);
          return result;
      }
docs: Complete the formatting of a finite number. On entry, the
  digitList must be filled in with the correct digits.