2017-09-07 2 views
0

Comment faire pour convertir "4,250,000.40" en 4,250,000.40 qui convertit chaîne en nombre en restant les virgules et les points? using JavaScriptComment convertir une chaîne en un nombre?

+1

Vous ne pouvez pas, comme ce que vous voulez est pas un nombre valide – adeneo

+2

Essayez '+ « 4,250,000.40 » .replace (/ \,/g, « »)' et vous obtiendrez '4250000.4' – adeneo

+0

merci pour votre réponse, Puis-je ajouter des virgules et des points plus anciens au nombre converti? –

Répondre

4

Vous pouvez utiliser parseFloat (str) pour convertir une chaîne en un nombre, mais vous devez d'abord supprimer les virgules de la chaîne, car parseFloat ne fonctionne pas pour les nombres avec des virgules.

parseFloat(str.replace(/,/g, "")); 
+0

Puis-je ajouter des virgules et des points au nombre converti plus tôt après la conversion? –

+0

Une fois converti, il s'agit d'un nombre et non d'une chaîne. Vous ne pouvez pas ajouter de virgules aux nombres, car leur représentation dans la mémoire ne permet rien d'autre que les données relatives à la valeur du nombre. – EKW

1

var str = "4,250,000.40"; 
 
str = str.replace(/\,/g, "") 
 
console.log(str) 
 
console.log(parseFloat(str).toFixed(2))//to always show 2 decimal places

1

Vous ne pouvez pas convertir directement "4,250,000.40" à un certain nombre de vanille JS, et encore moins conserver des virgules. 4,250,000.40 est pas un nombre valide en JavaScript, parce qu'un comma est un caractère illégal dans un Number.

vous pouvez utiliser regex pour supprimer des virgules, puis utilisez Number.parseFloat(), mais la mise en forme du numéro est perdu. Au lieu de cela, je suggère d'utiliser une bibliothèque de formatage de nombres comme Numeral.js. Pour convertir "4,250,000.40" à un numeral vous pouvez utiliser:

const num = numeral("4,250,000.40"); 

vous pouvez reformater votre numéro en utilisant la méthode format() comme ceci:

const formatedNum = numeral("4,250,000.40").format('0,0.00'); 
console.log(formatedNum); // "4,250,000.40" 

Voici un exemple de travail, y compris la mise en forme plus cool:

const num = numeral("4,250,000.40"); 
 
const formatedNum = num.format('0,0[.]00'); 
 
console.log(formatedNum); // "4,250,000.40" 
 
// you can format number as money 
 
console.log(num.format('$0,0[.]00')); // $4,250,000.40 
 
// you can use abbreviations like k or m 
 
console.log(num.format('$0.00a')); // $4.25m 
 
// you can use financial notation 
 
console.log(numeral("-4,250,000.40").format('($0,0)')); // ($4,250,000)
<script src="//cdnjs.cloudflare.com/ajax/libs/numeral.js/2.0.6/numeral.min.js"></script>