Pregunta Número de formato para mostrar siempre 2 decimales


Me gustaría formatear mis números para mostrar siempre dos decimales, redondeando cuando corresponda.

Ejemplos:

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

He estado usando esto:

parseFloat(num).toFixed(2);

Pero está mostrando 1 como 1, más bien que 1.00.


527
2018-05-26 05:22


origen


Respuestas:


Esto funciona bien en FF4:

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

Demo en vivo

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>

Tenga en cuenta que lo hará redondo a 2 decimales, entonces la entrada 1.346 regresará 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



Esta respuesta fallará si value = 1.005.

Como una solución mejor, el problema de redondeo se puede evitar mediante el uso de números representados en notación exponencial:

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

Crédito: Redondeo de decimales 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



Respuesta más simple:

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

Ejemplo: http://jsfiddle.net/E2XU7/


11
2018-04-08 18:37



Una solución mucho más genérica para redondear a N lugares

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 ya está usando jQuery, podría mirar usando el Formato de número de jQuery enchufar.

El complemento puede devolver números formateados como una cadena, puede establecer separadores de decimales y miles, y puede elegir la cantidad de decimales que se mostrarán.

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

También puedes obtener Formato de número jQuery de GitHub.


7
2017-11-08 23:47



Para el redondeo más preciso, crea esta función:

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

y lo usa para redondear a 2 decimales:

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

Gracias a Razu, esta artículo, y Referencia Math.round de MDN.


7
2018-01-14 18:24



¿Es esto lo que quieres decir?

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