code: @Override
    protected String consumeDecimal() {
  
      StringBuilder builder = null;
      boolean noSign = false;
      boolean noExponent = false;
      boolean noDot = false;
      boolean done = false;
      char c = 0;
      hasNext();
      while (true) {
        int start = this.offset;
        while (this.offset < this.limit) {
          c = this.buffer[this.offset];
          if ((c == '+') || (c == '-')) {
            if (noSign) {
              done = true;
              break;
            } else {
              noSign = true;
            }
          } else if (c == 'e') {
            if (noExponent) {
              done = true;
              break;
            } else {
              noExponent = true;
              noSign = false;
              noDot = true;
            }
          } else if (c == '.') {
            if (noDot) {
              done = true;
              break;
            } else {
              noDot = true;
            }
          } else if ((c >= '0') && (c <= '9')) {
            noSign = true;
          } else {
            done = true;
            break;
          }
          this.offset++;
        }
        if (done) {
          return getAppended(builder, start, this.offset);
        }
        int len = this.offset - start;
        if (len > 0) {
          builder = append(builder, start, this.offset);
        }
        if (done || !fill()) {
          if (builder == null) {
            throw new IllegalStateException("Invalid character for decimal number: " + c);
          }
          return builder.toString();
        }
      }
    }
docs: Consumes the characters of a decimal number (double or float).
  
  @return the decimal number as {@link String}.