toFixed在金额运算的时候是非常方便的,但是今天写的时候遇到一点小坑,所以记录一下,免得日后又忘了。
toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。
语法
NumberObject.toFixed(num)
参数 | 描述 |
---|---|
num | 必需。规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将用 0 代替。 |
var num =Number(13.37);
console.log(num.toFixed(1)); //13.4
console.log(num);//13.37
这样写本身没啥问题,但是要注意的是toFixed方法只能是Number类型的值才能去调用。而且返回值不会修改原数字。且它的返回值是一个string类型,如果需要利用他的返回值再去计算,就需要再次转换成Number类型。比如
var allPrice=13.6461;
allPrice=Number(allPrice.toFixed(2)); //要注意转换成Number类型 再去运算,默认toFixed返回的是string类型。
totalPrice = allPrice+otherPrice;
之前就是不清楚toFixed返回的是string类型,导致后面运算出了错误