Необычная настройка нескольких веб-сайтов в Windows Server 2012 R2

Это небольшая функция, которую я собрал сейчас, чтобы решить эту проблему - она ​​создает выражение, анализируя строку по одному персонажу за раз (на самом деле это довольно быстро). Это займет какое-либо математическое выражение (ограничивается только +, -, *, / операторами) и возвращает результат. Он также может обрабатывать отрицательные значения и операции с неограниченным числом.

Единственное, что нужно сделать, это убедиться, что он вычисляет * & amp; / до + & amp; -. Добавит эту функциональность позже, но пока это делает то, что мне нужно ...

/**
* Evaluate a mathematical expression (as a string) and return the result
* @param {String} expr A mathematical expression
* @returns {Decimal} Result of the mathematical expression
* @example
*    // Returns -81.4600
*    expr("10.04+9.5-1+-100");
*/ 
function expr (expr) {

    var chars = expr.split("");
    var n = [], op = [], index = 0, oplast = true;

    n[index] = "";

    // Parse the expression
    for (var c = 0; c < chars.length; c++) {

        if (isNaN(parseInt(chars[c])) && chars[c] !== "." && !oplast) {
            op[index] = chars[c];
            index++;
            n[index] = "";
            oplast = true;
        } else {
            n[index] += chars[c];
            oplast = false;
        }
    }

    // Calculate the expression
    expr = parseFloat(n[0]);
    for (var o = 0; o < op.length; o++) {
        var num = parseFloat(n[o + 1]);
        switch (op[o]) {
            case "+":
                expr = expr + num;
                break;
            case "-":
                expr = expr - num;
                break;
            case "*":
                expr = expr * num;
                break;
            case "/":
                expr = expr / num;
                break;
        }
    }

    return expr;
}
3
задан Organic 13 March 2019 в 11:46
поделиться