code: private Number readReal(long prev, boolean negative) throws IOException {
  		StringBuilder b = new StringBuilder(prev + ".");
  		boolean exponent = false;
  		boolean expsign = false;
  		do {
  			currentCharacter = r.read();
  			if (currentCharacter >= '0' && currentCharacter <= '9') {
  				b.append((char)currentCharacter);
  			} else if (currentCharacter == 'e' || currentCharacter == 'E') {
  				if (exponent) {
  					break;
  				}
  				b.append((char)currentCharacter);
  				exponent = true;
  			} else if (currentCharacter == '-' || currentCharacter == '+') {
  				if (expsign) {
  					break;
  				}
  				b.append((char)currentCharacter);
  				expsign = true;
  			} else {
  				break;
  			}
  		} while (currentCharacter >= 0);
  		
  		double result = Double.parseDouble(b.toString());
  		return negative ? -result : result;
  	}
docs: Reads a real number from the stream
  @param prev the digits read to far
  @param negative true if the number is negative
  @return the real number
  @throws IOException if the stream could not be read