Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 package org.dynjs.runtime.builtins;
 
 
 public class ParseFloat extends AbstractNonConstructorFunction {
 
    public ParseFloat(GlobalObject globalObject) {
        super(globalObject"f");
    }
    @Override
    public Object call(ExecutionContext contextObject selfObject... args) {
        String text = Types.toString(contextargs[0]);
        if (text.equals("")) {
            return .;
        }
        int len = text.length();
        int firstNonWhitespace = 0;
        for (int i = 0; i < len; ++i) {
            char c = text.charAt(i);
            if (Types.isWhitespace(c)) {
                // nothing
            } else {
                firstNonWhitespace = i;
                break;
            }
        }
        if (text.substring(firstNonWhitespace).startsWith("Infinity") || text.substring(firstNonWhitespace).startsWith("+Infinity")) {
            return .;
        }
        if (text.substring(firstNonWhitespace).startsWith("-Infinity")) {
            return .;
        }
        int digitSearchStart = firstNonWhitespace;
        int lastDigit = firstNonWhitespace;
        if ((text.charAt(firstNonWhitespace) == '-') || (text.charAt(firstNonWhitespace) == '+')) {
            ++digitSearchStart;
        }
        boolean dotSeen = false;
        for (int i = digitSearchStarti < len; ++i) {
            char c = text.charAt(i);
            if (c >= '0' && c <= '9') {
                lastDigit = i;
            } else {
                if (!dotSeen && c == '.') {
                    lastDigit = i;
                    dotSeen = true;
                } else {
                    break;
                }
            }
        }
        if (text.length() > (lastDigit + 1)) {
            digitSearchStart = lastDigit + 1;
            if (text.charAt(digitSearchStart) == 'e' || text.charAt(digitSearchStart) == 'E') {
                ++digitSearchStart;
                if ((text.charAt(digitSearchStart) == '-') || (text.charAt(digitSearchStart) == '+')) {
                    ++digitSearchStart;
                }
                for (int i = digitSearchStarti < len; ++i) {
                    char c = text.charAt(i);
                    if (c >= '0' && c <= '9') {
                        lastDigit = i;
                    } else {
                        break;
                    }
                }
            }
        }
        //System.err.println( "in[" + text + "]" );
        text = text.substring(firstNonWhitespacelastDigit + 1);
        //System.err.println( "out[" + text + "]" );
        try {
            return Double.parseDouble(text);
        } catch (NumberFormatException e) {
            return .;
        }
    }
New to GrepCode? Check out our FAQ X