今天在做价格计算的时候遇到一个截取小数的问题,第一想到的是toFixed()
方法,但是这个方法有个问题就是他在处理小数的时候会进行四舍五入。
先来看看toFixed
的用法
toFixed()
方法使用定点表示法来格式化一个数值。
语法:
numObj.toFixed(digits)
参数
digits
:小数点后数字的个数;介于 0 到 20(包括)之间,实现环境可能支持更大范围。如果忽略该参数,则默认为 0。
例如:
function financial(x) {
return Number.parseFloat(x).toFixed(2);
}
console.log(financial(123.456));
// expected output: "123.46"
console.log(financial(0.004));
// expected output: "0.00"
console.log(financial('1.23e+5'));
// expected output: "123000.00"
通过下边的方法可以强制截取指定小数位数的数字
String.prototype.myToFixed = function(num) {
var s = this;
if(s.indexOf('.')!=-1){
return s.substring(0,s.indexOf(".")+(num+1))
}else{
return s;
}
}