web-dev-qa-db-fra.com

fonction jQuery pour formater le nombre avec des virgules et des décimales

J'utilise la fonction suivante pour formater les nombres en tant que types d'utilisateurs. Il insérera une virgule tous les 3 chiffres. Ex: 45696.36 devient 45,696.36.

Cependant, j'ai rencontré un problème avec cela. Si les nombres après la virgule sont supérieurs à 3 chiffres, il commence à leur ajouter des virgules. Ex: 1136.6696 devient 1,136.6,696.

Ceci est ma fonction:

$.fn.digits = function(){
  return this.each(function() {
    $(this).val( $(this).val().replace(/[^0-9.-]/g, '') );
    $(this).val( $(this).val().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,") ); 
  }) 
}

Comment puis-je résoudre ce problème afin qu'il cesse de placer des virgules après la décimale? J'utilise jQuery 1.8. Merci!

12
Jeff

Pour ce faire, vous pouvez diviser votre chaîne en caractères '.', puis effectuer votre conversion par virgule sur la première section uniquement, en tant que tel:

function ReplaceNumberWithCommas(yourNumber) {
    //Seperates the components of the number
    var n= yourNumber.toString().split(".");
    //Comma-fies the first part
    n[0] = n[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    //Combines the two sections
    return n.join(".");
}

ReplaceNumberWithCommas(1136.6696); //yields 1,136.6696

Exemple

44
Rion Williams

J'utilise accounting.js lib:

accounting.format(1136.6696, 4) // 1,136.6696
1
hlcs