web-dev-qa-db-fra.com

JavaScript affichant un float à 2 décimales

Je voulais afficher un nombre à 2 décimales.

Je pensais pouvoir utiliser toPrecision(2) en JavaScript.

Cependant, si le nombre est 0.05, j'obtiens 0.0500. Je préférerais que cela reste le même.

Voir sur JSbin .

Quelle est la meilleure façon de procéder?

Je peux penser à coder quelques solutions, mais j'imagine (j'espère) que quelque chose comme ceci est intégré?

238
alex
float_num.toFixed(2);

Remarque:toFixed() arrondira ou complétera avec des zéros si nécessaire pour respecter la longueur spécifiée.

434
Jason McCreary

Vous pouvez le faire avec la fonction toFixed, mais c'est buggy dans IE . Si vous voulez une solution fiable, regardez ma réponse ici .

47
Elias Zamaria

Essayez toFixed au lieu de toPrecision.

16
casablanca

Je ne sais pas comment je suis arrivé à cette question, mais même si cela fait de nombreuses années que cela est demandé, j'aimerais ajouter une méthode simple et rapide que je suis et qui ne m'a jamais laissé tomber:

var num = response_from_a_function_or_something();

var fixedNum = parseFloat(num).toFixed( 2 );
7
panos

number.parseFloat(2) fonctionne mais renvoie une chaîne.

Si vous souhaitez le conserver sous forme de nombre, vous pouvez utiliser:

Math.round(number * 100) / 100

3
rnmalone

function round(value, decimals) { return Number(Math.round(value+'e'+decimals)+'e-'+decimals); }

rond (1,005, 2); // return 1.01

rond (1,004, 2); // retourne 1 au lieu de 1,00

La réponse suit ce lien: http://www.jacklmoore.com/notes/rounding-in-javascript/

2
Huy Nguyen

La méthode toFixed() formate un nombre en utilisant la notation en point fixe.

et voici la syntaxe

numObj.toFixed([digits])

L'argument digits est facultatif et vaut par défaut 0. Le type de retour est une chaîne et non un nombre. Mais vous pouvez le convertir en nombre en utilisant 

numObj.toFixed([digits]) * 1

Il peut également lever des exceptions telles que TypeError, RangeError

Voici le détail complet et la compatibilité dans le navigateur.

0
Sunil Garg

Vous pouvez essayer de mélanger Number() et toFixed().

Faites convertir votre numéro cible en chaîne Nice avec X chiffres, puis convertissez la chaîne mise en forme en nombre.

Number( (myVar).toFixed(2) )


Voir exemple ci-dessous:

var myNumber = 5.01;
var multiplier = 5;
$('#actionButton').on('click', function() {
  $('#message').text( myNumber * multiplier );
});

$('#actionButton2').on('click', function() {
  $('#message').text( Number( (myNumber * multiplier).toFixed(2) ) );
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<button id="actionButton">Weird numbers</button>
<button id="actionButton2">Nice numbers</button>

<div id="message"></div>
0
George-Paul B.

toFixed function est utilisé pour limiter les nombres à virgule flottante à 2 décimales en javascript

two_decimal_num = parseFloat(3.14159.toFixed(2));
console.log(two_decimal_num)
0
Asad Manzoor

J'ai fait cette fonction. Cela fonctionne très bien mais retourne une chaîne.

function show_float_val(val,upto = 2){
  var val = parseFloat(val);
  return val.toFixed(upto);
}
0
Syed Nurul Islam