在 JavaScript 中,从浮点数转换为字符串时,如何获得小数点后的 2 位数字?例如,0.34 而不是 0.3445434。
如何在javascript中格式化浮点数?
IT技术
javascript
floating-point
2021-01-24 01:33:03
6个回答
使用时要小心toFixed()
:
首先,四舍五入是使用数字的二进制表示完成的,这可能会导致意外行为。例如
(0.595).toFixed(2) === '0.59'
而不是'0.6'
.
其次,有一个 IE 错误toFixed()
。在 IE 中(至少到版本 7,没有检查 IE8),以下情况成立:
(0.9).toFixed(0) === '0'
遵循 kkyy 的建议或使用自定义toFixed()
函数可能是个好主意,例如
function toFixed(value, precision) {
var power = Math.pow(10, precision || 0);
return String(Math.round(value * power) / power);
}
另一个需要注意的问题是,toFixed()
可能会在数字末尾产生不必要的零。例如:
var x=(23-7.37)
x
15.629999999999999
x.toFixed(6)
"15.630000"
这个想法是使用 a 清理输出RegExp
:
function humanize(x){
return x.toFixed(6).replace(/\.?0*$/,'');
}
该RegExp
尾随零(和可选小数点)匹配,以确保它看起来整数一样好。
humanize(23-7.37)
"15.63"
humanize(1200)
"1200"
humanize(1200.03)
"1200.03"
humanize(3/4)
"0.75"
humanize(4/3)
"1.333333"
var x = 0.3445434
x = Math.round (x*100) / 100 // this will make nice rounding