Калькулятор на js [почему перепутан порядок символов?]


#1
var grid = document.getElementsByClassName("grid")[0],
    display = document.getElementById("display"),
    zero = [],
    i = 0,
    isNew = true;

grid.onclick = function (e) {
    if (e.target.className == "button number") numberEnter(e.target.innerHTML);
    if (e.target.className == "button op") calculateValues(e.target.innerHTML);
    if (e.target.className == "button point") decimalPoint();
    if (e.target.className == "button clear") clearMemory();
    if (e.target.className == "button m1") clearSymbol();
}
function numberEnter (val) {
    if (isNew) {
        isNew = false;
        display.value = val;
        if (display.value == "0") display.value = val;
    }
    else display.value += val;
}
function calculateValues (op) {
    zero[i++] = parseFloat(display.value);
    zero[i++] = op;
    isNew = true;
    if (zero.length >= 3) {
        var a = zero[0];
        var op = zero[1];
        var b = zero[2];
        zero[0] = calculate(a, op, b);
        zero[1] = zero[3];
        i = 2;
        display.value = zero[0];
    }
}
function calculate (a, op, b) {
    if (op === "+") return a + b;
    if (op === "-") return a - b;
    if (op === "*") return a * b;
    if (op === "/") return a / b;
    if (op === "=") return b;
}
function decimalPoint () {
    if (isNew) display.value = "0.";
    if (display.value.indexOf(".") == -1) display.value += ".";
}
function clearMemory () {
    zero.length = 0;
    i = 0;
    isNew = true;
    begin = true;
    display.value = "0";
}
function clearSymbol () {
    var arr = display.value.split("");
    arr.pop();
    display.value = arr.join("");
}

здравствуйте! пишу калькулятор на js. возникла проблема. когда получается отрицательный результат, например минус два, выводится не “-2”, а “2-”. такая же проблема и с плавающей точкой. например, я хочу ввести число “1.1”. после “1” ввожу точку и получается не “1.”, а “.1”. но когда я продолжаю вводить, становится все нормально.
подскажите. в чем проблема? буду благодарен


#2

Запутанный код, трудно разобраться что к чему. Можешь выложить код с версткой в песочнице типа https://jsfiddle.net/ или https://codepen.io/pen/? Тогда будет проще определить где дела пошли не так.


#3

https://jsfiddle.net/Alexey9912/p2b3un0z/3/
вот весь код


#4

У тебя в стиле инпута установлено направление текста direction: rtl. Если нужно было выровнять по правой стороне, то нужно было text-align: right.

direction: rtl меняет не просто выравнивание, а всю очередность символов.


#5

да, спасибо, уже сам догадался