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

例子:

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

我一直在用这个:

parseFloat(num).toFixed(2);

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


当前回答

为了获得最精确的舍入,创建这个函数并使用它舍入到小数点后2位:

功能轮(价值,十进制)( return编号(数学。(价值+ e +十进制)+ e-' +十进制)。 ) log(“seeked to”+ round(1,005,2));

> 1.01

感谢Razu、这篇文章和MDN的数学。圆的参考。

其他回答

对于现代浏览器,使用toLocaleString:

var num = 1.345;
num.toLocaleString(undefined, { maximumFractionDigits: 2, minimumFractionDigits: 2 });

指定区域设置标记作为控制十进制分隔符的第一个参数。对于点,使用例如English U.S. locale:

num.toLocaleString("en-US", { maximumFractionDigits: 2, minimumFractionDigits: 2 });

这使:

1.35

大多数欧洲国家使用逗号作为小数分隔符,所以如果你使用瑞典/瑞典地区:

num.toLocaleString("sv-SE", { maximumFractionDigits: 2, minimumFractionDigits: 2 });

它会给:

1, 35

(Math.round(num * 100) / 100).toFixed(2);

现场演示

var num1 = “1”; document.getElementById('num1').innerHTML =(Math.round(num1 * 100) / 100).toFixed(2); var num2 = “1.341”; document.getElementById('num2').innerHTML =(Math.round(num2 * 100) / 100).toFixed(2); var num3 = “1.345”; document.getElementById('num3').innerHTML =(Math.round(num3 * 100) / 100).toFixed(2); 跨度 { 边框:1px 实心 #000; 边距:5px; 填充:5px; } <span id=“num1”></span> <span id=“num2”></span> <span id=“num3”></span>

注意,它将四舍五入到小数点后2位,因此输入1.346将返回1.35。

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

function currencyFormat (num) {
    return "$" + num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,")
}

console.info(currencyFormat(2665));   // $2,665.00
console.info(currencyFormat(102665)); // $102,665.00

在需要特定格式的地方,您应该编写自己的例程或使用库函数来完成所需的工作。基本的ECMAScript功能通常不足以显示格式化的数字。

关于舍入和格式的详细解释在这里:http://www.merlyn.demon.co.uk/js-round.htm#RiJ

作为一般规则,舍入和格式化应仅作为输出前的最后一步执行。过早地这样做可能会引入意想不到的大错误并破坏格式。