Skip to content

Instantly share code, notes, and snippets.

@robsonribeiros
Created April 6, 2022 15:13
Show Gist options
  • Save robsonribeiros/7f45ec7b5b57959fc90ef06fbbea444e to your computer and use it in GitHub Desktop.
Save robsonribeiros/7f45ec7b5b57959fc90ef06fbbea444e to your computer and use it in GitHub Desktop.
Somar números String sem converter
function adicionaZerosAEsquerdaDoMenorNumero(numero, maiorNumero) {
return numero.padStart(maiorNumero, "0");
}
function obtemOTamanhoDoMaiorNumeroEmDigitos(n1, n2) {
if (n1.length > n2.length) {
return n1.length;
}
return n2.length;
}
function somaDoisNumerosStringSemConverter(n1, n2) {
let resultadoFinal = '';
let resultadoParcial = '';
let valorBase = "0";
const maior = obtemOTamanhoDoMaiorNumeroEmDigitos(n1, n2);
let numero1 = adicionaZerosAEsquerdaDoMenorNumero(n1, maior);
let numero2 = adicionaZerosAEsquerdaDoMenorNumero(n2, maior);
for (let i = maior - 1; i >= 0; i--) {
resultadoParcial = String((numero1[i].charCodeAt() - "0".charCodeAt()) + (numero2[i].charCodeAt() - "0".charCodeAt()) + (valorBase[0].charCodeAt() - "0".charCodeAt()));
if (resultadoParcial.length > 1) {
resultadoFinal = String(resultadoParcial[1]) + resultadoFinal;
valorBase = String(resultadoParcial[0]);
} else {
resultadoFinal = resultadoParcial + resultadoFinal;
valorBase = "0";
}
}
if (valorBase != "0") {
return valorBase + resultadoFinal;
}
return resultadoFinal;
}
const final = somaDoisNumerosStringSemConverter("1", "999");
console.log(final, typeof final); // 1000, 'string'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment