我想格式化我的数字,总是显示2小数点后,四舍五入适用的地方。
例子:
number display
------ -------
1 1.00
1.341 1.34
1.345 1.35
我一直在用这个:
parseFloat(num).toFixed(2);
但是它把1显示为1,而不是1.00。
我想格式化我的数字,总是显示2小数点后,四舍五入适用的地方。
例子:
number display
------ -------
1 1.00
1.341 1.34
1.345 1.35
我一直在用这个:
parseFloat(num).toFixed(2);
但是它把1显示为1,而不是1.00。
当前回答
如果value = 1.005,此回答将失败。
作为一个更好的解决方案,可以使用指数表示的数字来避免舍入问题:
Number(Math.round(1.005+'e2')+'e-2'); // 1.01
@Kon和原作者建议的更简洁的代码:
Number(Math.round(parseFloat(value + 'e' + decimalPlaces)) + 'e-' + decimalPlaces)
你可以在末尾加上toFixed()以保留小数点,例如:1.00,但注意它将返回字符串。
Number(Math.round(parseFloat(value + 'e' + decimalPlaces)) + 'e-' + decimalPlaces).toFixed(decimalPlaces)
来源:JavaScript中的四舍五入小数
其他回答
你在找地板吗?
变量数 = 1.42482; var num2 = 1; var fnum = Math.floor(num).toFixed(2); var fnum2 = Math.floor(num2).toFixed(2); console.log(fnum + “ 和 ” + fnum2);两个值均为 1.00
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
parseInt(number * 100) / 100;为我工作。
在需要特定格式的地方,您应该编写自己的例程或使用库函数来完成所需的工作。基本的ECMAScript功能通常不足以显示格式化的数字。
关于舍入和格式的详细解释在这里:http://www.merlyn.demon.co.uk/js-round.htm#RiJ
作为一般规则,舍入和格式化应仅作为输出前的最后一步执行。过早地这样做可能会引入意想不到的大错误并破坏格式。
var quantity = 12;
var import1 = 12.55;
var total = quantity * import1;
var answer = parseFloat(total).toFixed(2);
document.write(answer);