Comment puis-je ajouter 1 à cette chaîne en JavaScript?
var message = "12345612345678901234567890";
Je veux la sortie comme ceci:
"12345612345678901234567891"
J'ai essayé ceci:
var message = "12345612345678901234567890"; message = parseInt(message); var result = message + 1;
Mais parseInt
renvoyé une valeur en notation scientifique comme 1.234567896453e + 25.
Essayez la grande bibliothèque entière ici pour ajouter de gros nombres.
var message = "12345612345678901234567890"; var messageAsNumber = bigInt(message); var messagePlusOne = messageAsNumber.add('1'); console.log(messagePlusOne.toString());
<script src="https://peterolson.github.io/BigInteger.js/BigInteger.min.js"></script>
Vous pouvez créer un tableau à partir de la chaîne dans .length
s of 3
partir de la fin de la chaîne.
Utilisez un motif qui vérifie si l'addition 1
aboutirait à l'index du tableau car un nombre additionnel 1000
, s'il est true
, augmente l'indice de tableau précédent par 1
et remplissez l'indice de tableau actuel avec "000"
.
Le schéma ci-dessous vérifie et ajuste les deux derniers éléments du tableau; Le même modèle peut être étendu pour vérifier chaque index du tableau, pour ajuster correctement un ou plusieurs des index à "000"
et augmenter l'indice précédent par 1
.
let message1 = "12345612345678901234567890"; let message2 = "12345612345678901234567999"; let message3 = "12345612345678901234999999"; function addNumberToString(str, numToAdd, digits = []) { const [N, len, max] = [3, str.length, 1000]; for (let i = -N, l = len; digits.length < len / N; i -= N, l -= N) { digits.unshift(str.slice(i, l)); } function add(m) { if (+digits[digits.length - m] + numToAdd < max) { let n = +digits[digits.length - m]; digits[digits.length - m] = String(Number(n + numToAdd)); } else { const M = m + 1; if (+digits[digits.length - M] + numToAdd < max) { let n = +digits[digits.length - M]; digits[digits.length - M] = String(Number(n + numToAdd)); digits[digits.length - (M - 1)] = "0".repeat(N); } else { if (digits[digits.length - (m + 1)]) { digits[digits.length - (M - 1)] = "0".repeat(N); add(m + 1); } } } return digits.join("") } return add(1); } console.log( addNumberToString(message1, 1) , addNumberToString(message2, 1) , addNumberToString(message3, 1) );