private double toDouble(String number){
        boolean isNeg = false;
        if(number.startsWith("-")){
            isNeg = true;
            number = number.substring(1);
        }
        int result = 0;
        int pow = 1;
        boolean foundDot = false;
        for(char ch : number.toCharArray()){
            if(ch == '.'){
                foundDot = true;
                continue;
            }
            if(foundDot){
                pow = pow*10;
            }
            result *= 10;
            result += (ch - '0');
        }
        
        double doubleResult = (result*1.0)/pow;
        
        return isNeg ? doubleResult*-1 : doubleResult;
    }
http://www.careercup.com/question?id=4901629824335872
e.g
-99.01E-2 -> -.9901
845.67E2  -> 84567.0
src/com/interview/misc/FloatPointConversion.java