53 votes

format javascript / devise

Je travaille avec l'extrait suivant et le résultat final est un nombre comme 349 . Comment le formater pour qu'il soit $349.00 ? Je pensais que formatNumber() fonctionnerait? Qu'est-ce que je fais mal? Le javascript effectue une série de calculs et présente ensuite le total net, les taxes et le total. Pour le total net et la taxe, j'aimerais un dollar et deux décimales.

1314voto

aross Points 501

La nouvelle ECMAScript l'Internationalisation de l'API offre un numberformat fonction.

À l'aide de l'API pour ce faire:

// Create our number formatter.
var formatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  minimumFractionDigits: 2,
});

alert(formatter.format(349)); /* $349.00 */

Comme cette spécification est relativement nouveau, j'ai compilé quelques informations sur la prise en charge du navigateur:

  • IE soutient depuis IE11
  • Bureau FF prend en charge depuis v27
  • Mobile FF tous les soirs (v30) ne le supporte pas encore.
  • Chrome prend en charge
  • Il y a une cale d'appui sur les navigateurs plus anciens, mais je ne l'ai pas testé.

99voto

Jonathan M Points 9304

Voici le meilleur formateur js money que j'ai vu:

 Number.prototype.formatMoney = function(decPlaces, thouSeparator, decSeparator) {
    var n = this,
        decPlaces = isNaN(decPlaces = Math.abs(decPlaces)) ? 2 : decPlaces,
        decSeparator = decSeparator == undefined ? "." : decSeparator,
        thouSeparator = thouSeparator == undefined ? "," : thouSeparator,
        sign = n < 0 ? "-" : "",
        i = parseInt(n = Math.abs(+n || 0).toFixed(decPlaces)) + "",
        j = (j = i.length) > 3 ? j % 3 : 0;
    return sign + (j ? i.substr(0, j) + thouSeparator : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thouSeparator) + (decPlaces ? decSeparator + Math.abs(n - i).toFixed(decPlaces).slice(2) : "");
};
 

Il a été reformaté et emprunté à partir d'ici: http://stackoverflow.com/a/149099/751484

Vous devrez fournir votre propre code de devise (vous avez utilisé $ ci-dessus).

Appelez-le comme ceci (bien que notez que les arguments par défaut sont 2, une virgule et un point, vous n'avez donc pas besoin de fournir d'arguments si tel est votre préférence):

 var myMoney=3543.75873;
var formattedMoney = '$' + myMoney.formatMoney(2,',','.'); // "$3,543.76"
 

70voto

crush Points 7891

Je pense que ce que vous voulez, c'est f.nettotal.value = "$" + showValue.toFixed(2);

23voto

XMLilley Points 2351

+1 à Jonathan M pour avoir fourni la méthode originale. Etant donné qu’il s’agit explicitement d’un formateur de devise, j’ai ajouté le symbole monétaire («$» par défaut) à la sortie et ajouté une virgule par défaut comme séparateur de milliers. Si vous ne voulez pas réellement de symbole monétaire (ou de séparateur de milliers), utilisez simplement "" (chaîne vide) comme argument.

 Number.prototype.formatMoney = function(decPlaces, thouSeparator, decSeparator, currencySymbol) {
    // check the args and supply defaults:
    decPlaces = isNaN(decPlaces = Math.abs(decPlaces)) ? 2 : decPlaces;
    decSeparator = decSeparator == undefined ? "." : decSeparator;
    thouSeparator = thouSeparator == undefined ? "," : thouSeparator;
    currencySymbol = currencySymbol == undefined ? "$" : currencySymbol;

    var n = this,
        sign = n < 0 ? "-" : "",
        i = parseInt(n = Math.abs(+n || 0).toFixed(decPlaces)) + "",
        j = (j = i.length) > 3 ? j % 3 : 0;

    return sign + currencySymbol + (j ? i.substr(0, j) + thouSeparator : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thouSeparator) + (decPlaces ? decSeparator + Math.abs(n - i).toFixed(decPlaces).slice(2) : "");
};
 

16voto

Gate Points 374

Il est construit en function toFixed en javascript

 var num = new Number(349);
document.write("$" + num.toFixed(2));
 

Prograide.com

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.

Powered by:

X