Je veux supprimer les virgules de la chaîne et calculer le montant en utilisant JavaScript.
Par exemple, j'ai ces deux valeurs :
- 100,000.00
- 500,000.00
Maintenant je veux enlever les virgules de ces chaînes et je veux le total de ces montants.
Je veux supprimer les virgules de la chaîne et calculer le montant en utilisant JavaScript.
Par exemple, j'ai ces deux valeurs :
Maintenant je veux enlever les virgules de ces chaînes et je veux le total de ces montants.
Pour enlever les virgules, vous devrez utiliser replace
sur la corde. Pour convertir en flottant afin de pouvoir faire les calculs, vous aurez besoin de parseFloat
:
var total = parseFloat('100,000.00'.replace(/,/g, '')) +
parseFloat('500,000.00'.replace(/,/g, ''));
Yep, il faut combiner replace
y parseFloat
. voici un cas de test rapide : jsfiddle.net/TtYpH
On est en 2017, n'y a-t-il aucun moyen d'aller à et de une chaîne locale ? Comment inverser cette fonction ? developer.mozilla.org/fr/US/docs/Web/JavaScript/Référence/ . J'ai posté une question distincte ici : stackoverflow.com/questions/41905406/
Réponse connexe, mais si vous voulez nettoyer un utilisateur qui saisit des valeurs dans un formulaire, voici ce que vous pouvez faire :
const numFormatter = new Intl.NumberFormat('en-US', {
style: "decimal",
maximumFractionDigits: 2
})
// Good Inputs
parseFloat(numFormatter.format('1234').replace(/,/g,"")) // 1234
parseFloat(numFormatter.format('123').replace(/,/g,"")) // 123
// 3rd decimal place rounds to nearest
parseFloat(numFormatter.format('1234.233').replace(/,/g,"")); // 1234.23
parseFloat(numFormatter.format('1234.239').replace(/,/g,"")); // 1234.24
// Bad Inputs
parseFloat(numFormatter.format('1234.233a').replace(/,/g,"")); // NaN
parseFloat(numFormatter.format('$1234.23').replace(/,/g,"")); // NaN
// Edge Cases
parseFloat(numFormatter.format(true).replace(/,/g,"")) // 1
parseFloat(numFormatter.format(false).replace(/,/g,"")) // 0
parseFloat(numFormatter.format(NaN).replace(/,/g,"")) // NaN
Utiliser la date internationale locale via format
. Ceci nettoie les mauvaises entrées, s'il y en a une, il retourne une chaîne de caractères de NaN
vous pouvez vérifier. Il n'y a actuellement aucun moyen de supprimer les virgules dans le cadre des paramètres locaux. (à partir du 10/12/19) Vous pouvez donc utiliser une commande regex pour supprimer les virgules en utilisant les éléments suivants replace
.
ParseFloat
convertit la définition de ce type de chaîne en nombre
Si vous utilisez React, voici à quoi pourrait ressembler votre fonction de calcul :
updateCalculationInput = (e) => {
let value;
value = numFormatter.format(e.target.value); // 123,456.78 - 3rd decimal rounds to nearest number as expected
if(value === 'NaN') return; // locale returns string of NaN if fail
value = value.replace(/,/g, ""); // remove commas
value = parseFloat(value); // now parse to float should always be clean input
// Do the actual math and setState calls here
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
1 votes
Ce n'est pas efficace, mais vous pouvez toujours faire
"1,000,000.00".split(',").join("")
.