Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

222
Views
Cómo convertir una cadena larga (más de 16 dígitos) en números

esta es una función que simplemente incrementa un número en la matriz, pero el problema que interacciono cuando pongo muchos números en la matriz (más de 16 dígitos) cuando uso parseInt() acaba de devolver 16 números correctos y más que eso es cero

 6145390195186705000

y esperado

 6145390195186705543

la función

 var plusOne = function(digits) { var numbersInString = digits.join(''); var theNumbers = parseInt(numbersInString); var theNumbersPlusOne = theNumbers + 1; var result = String(theNumbersPlusOne).split("").map((theNumbersPlusOne) => { return Number(theNumbersPlusOne); }); return result; }; console.log(plusOne([6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,5,4,3]));

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Puede usar BigInt para manejar este problema.

 var plusOne = function(digits) { var numbersInString = digits.join(''); var theNumbers = BigInt(numbersInString); var theNumbersPlusOne = theNumbers + BigInt(1); var result = theNumbersPlusOne.toString().split("").map((theNumbersPlusOne) => { return Number(theNumbersPlusOne); }); return result; }; console.log(plusOne([6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,5,4,3]));

about 4 years ago · Juan Pablo Isaza Report

0

Simplemente ampliando mi comentario anterior con otra solución ...

Ha superado el valor entero seguro máximo. ( Number.MAX_SAFE_INTEGER , que es igual a 9007199254740991 ). Los números más grandes que este no son compatibles con los tipos de enteros estándar en javascript, o más bien no hay suficiente precisión para representarlos . Cualquier cosa mayor que esto se representa en notación científica y los dígitos adicionales se truncan y se representan solo como ceros.

Dicho esto, ni siquiera necesita convertir la matriz en una cadena en un número entero solo para incrementarla. Simplemente puede incrementar los dígitos individuales en la matriz, comenzando por el final y avanzando hacia adelante para "llevar el 1", por así decirlo.

 var plusOne = function(digits) { for(let i = digits.length - 1; i > -1; i--) { if(digits[i] == 9) { digits[i] = 0; if(i == 0) digits = [1].concat(digits); } else { digits[i]++; break; } } return digits; }; console.log(plusOne([6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,5,4,3]));

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!