Question Numéro de format pour toujours afficher 2 décimales


Je voudrais formater mes nombres pour toujours afficher 2 décimales, en arrondissant le cas échéant.

Exemples:

number     display
------     -------
1          1.00
1.341      1.34
1.345      1.35

J'ai utilisé ceci:

parseFloat(num).toFixed(2);

Mais il affiche 1 comme 1, plutôt que 1.00.


527
2018-05-26 05:22


origine


Réponses:


Cela fonctionne très bien dans FF4:

parseFloat(Math.round(num3 * 100) / 100).toFixed(2);

Démonstration en direct

var num1 = "1";
document.getElementById('num1').innerHTML = parseFloat(Math.round(num1 * 100) / 100).toFixed(2);

var num2 = "1.341";
document.getElementById('num2').innerHTML = parseFloat(Math.round(num2 * 100) / 100).toFixed(2);

var num3 = "1.345";
document.getElementById('num3').innerHTML = parseFloat(Math.round(num3 * 100) / 100).toFixed(2);
span {
    border: 1px solid #000;
    margin: 5px;
    padding: 5px;
}
<span id="num1"></span>
<span id="num2"></span>
<span id="num3"></span>

Notez qu'il sera rond à 2 décimales, donc l'entrée 1.346 reviendra 1.35.


771
2018-05-26 05:27



Number(1).toFixed(2);         // 1.00
Number(1.341).toFixed(2);     // 1.34
Number(1.345).toFixed(2);     // 1.34 NOTE: See andy's comment below.
Number(1.3450001).toFixed(2); // 1.35

197
2017-11-08 16:06



Cette réponse va échouer si value = 1.005.

Comme meilleure solution, le problème d'arrondi peut être évité en utilisant des nombres représentés en notation exponentielle:

Number(Math.round(1.005+'e2')+'e-2').toFixed(2); // 1.01

Crédit: Arrondir les décimales en JavaScript


63
2017-08-24 09:30



var num = new Number(14.12);
console.log(num.toPrecision(2));//outputs 14
console.log(num.toPrecision(3));//outputs 14.1
console.log(num.toPrecision(4));//outputs 14.12
console.log(num.toPrecision(5));//outputs 14.120

14
2017-09-07 13:16



Réponse la plus simple:

var num = 1.2353453;
num.toFixed(2); // 1.24

Exemple: http://jsfiddle.net/E2XU7/


11
2018-04-08 18:37



Une solution beaucoup plus générique pour arrondir à N endroits

function roundN(num,n){
  return parseFloat(Math.round(num * Math.pow(10, n)) /Math.pow(10,n)).toFixed(n);
}


console.log(roundN(1,2))
console.log(roundN(1.34,2))
console.log(roundN(1.35,2))
console.log(roundN(1.344,2))
console.log(roundN(1.345,2))
console.log(roundN(1.344,3))
console.log(roundN(1.345,3))
console.log(roundN(1.3444,3))
console.log(roundN(1.3455,3))

Output

1.00
1.34
1.35
1.34
1.35
1.344
1.345
1.344
1.346

10
2017-09-06 12:31



var number = 123456.789;


console.log(new Intl.NumberFormat('en-IN', { maximumFractionDigits: 2 }).format(number));

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat


7
2017-11-28 09:09



Si vous utilisez déjà jQuery, vous pouvez utiliser le Format de numéro jQuery brancher.

Le plugin peut renvoyer des nombres formatés sous forme de chaîne, vous pouvez définir des séparateurs décimaux et des milliers, et vous pouvez choisir le nombre de décimales à afficher.

$.number( 123, 2 ); // Returns '123.00'

Vous pouvez également obtenir Format de nombre jQuery de GitHub.


7
2017-11-08 23:47



Pour l'arrondi le plus précis, créez cette fonction:

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

et utilisez-le pour arrondir à 2 décimales:

console.log("seeked to " + round(1.005, 2));
> 1.01

Grâce à Razu, ce article et La référence Math.round de MDN.


7
2018-01-14 18:24



C'est ce que tu veux dire?

function showAsFloat(num, n){
      return !isNaN(+num) ? (+num).toFixed(n || 2) : num;
}

document.querySelector('#result').textContent = 
    [
     'command                      | result',
     '-----------------------------------------------',
     'showAsFloat(1);              | ' + showAsFloat(1),
     'showAsFloat(1.314);          | ' + showAsFloat(1.314),
     'showAsFloat(\'notanumber\')    | ' + showAsFloat('notanumber'),
     'showAsFloat(\'23.44567\', 3)   | ' + showAsFloat('23.44567', 3),
     'showAsFloat(2456198, 5)      | ' + showAsFloat('2456198', 5),
     'showAsFloat(0);              | ' + showAsFloat(0)
    ].join('\n');
<pre id="result"></pre>


7
2018-05-26 06:17



Convertir un nombre en une chaîne, en ne conservant que deux décimales:

var num = 5.56789;
var n = num.toFixed(2);

Le résultat de n sera:

5.57

4
2018-06-21 05:58