JSFiddle - React, Tailwind, and code Playground

by Darby Rathbone

JavaScript

var A = '399999999';
var B = '222222.222222222';

var add = function add(_a, _b) {
    if (!/\./gmi.test(_a) || !/\./gmi.test(_b)) {
        _a=/\./gmi.test(_a)?_a:_a+".0";
        _b=/\./gmi.test(_b)?_b:_b+".0";
    }
        var sides = [
            [_a.toString().split('.')[0].split(''), _a.toString().split('.')[1].split('')],
            [_b.toString().split('.')[0].split(''), _b.toString().split('.')[1].split('')]
        ];
        while (sides[0][1].length > sides[1][1].length) {
            sides[1][1].push("0");
        }
        while (sides[0][1].length < sides[1][1].length) {
            sides[0][1].push("0");
        }

    var _add = function (a, b) {
        console.log(a.join(''),b.join(''));
        var a = a.reverse();
        var b =b.reverse();

        var r = [0];
        var c = [];
        for (var i = 0; i < Math.max(a.length, b.length, r.length); i++) {
            if (!r[i]) r[i] = 0;

            var d = parseInt((Number(a[i]) || 0) + (Number(b[i]) || 0) + Number(r[i]));
            d = d.toString().split('');
            c[i] = d.pop();
            if (d.join('')) r[i + 1] = d.join('');
        }
        return c;
    };
    var v = _add((sides[0][0].join('') + sides[0][1].join('')).split(''), (sides[1][0].join('') + sides[1][1].join('')).split('')).reverse().join('');
    console.log(v);
    return v.substr(0, v.length - sides[0][1].length) + "." + v.substr(sides[0][1].length * -1);

};
document.body.appendChild(document.createTextNode(A + " + " + B + " = " + add(A, B)));