我想格式化我的数字,总是显示2小数点后,四舍五入适用的地方。

例子:

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

我一直在用这个:

parseFloat(num).toFixed(2);

但是它把1显示为1,而不是1.00。


当前回答

一个更通用的N位舍入解决方案

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

其他回答

(num + "").replace(/^([0-9]*)(\.[0-9]{1,2})?.*$/,"$1$2")

我建议你用

new Intl.NumberFormat('de-DE', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(num)

这样,您还将拥有指定国家的本地格式,并且它将确保显示精确的2个小数(无论num是1还是1.12345,它将分别显示1.00和1.12)

在这个例子中,我使用德语本地化,因为我想我的数字显示与千分隔符,所以这将是一些输出:

1 => 1,00
1.12 => 1,12
1.1234 => 1,12
1234 => 1.234,00
1234.1234 => 1.234,12

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

变量数= 123456.789; console.log(纽约肯尼迪机场。NumberFormat(’en-IN’} maximumFractionDigits: 2 })的葡萄酒种植区(编号);

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

. getelementbyid(“line1”)。innerHTML = Number(1).toFixed(2); . getelementbyid(么)。innerHTML = Number(1.341).toFixed(2); . getelementbyid(“line3”)。innerHTML = Number(1.345).toFixed(2); . getelementbyid(“line4”)。innerHTML = Number(1.3450001).toFixed(2); < span id = " line1 " > < / span > < br / > < span id = "么" > < / span > < br / > < span id = " line3 " > < / span > < br / > < span id = " line4 " > < / span >

简单的回答是:

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

例如:http://jsfiddle.net/E2XU7/