今天给大家推荐几个亲测好用的截取小数点后几位数字的方法:
法一:Math.round法,保留两位小数
// round() 方法可把一个数字舍入为最接近的整数。
function math(){
var num = 23.456322;
console.log('数学方法');
console.log(Math.round(num*100)/100);
}
math();
法二:toFixed方法进行四舍五入,强制保留两位小数,不够补0
// IE5.5+才支持
function fixed(){
var num = 23.456322;
console.log('用toFixed方法进行四舍五入,强制保留两位小数,不够补0');
console.log(num.toFixed(2));
}
fixed();
法三:不推荐,但也记录一下吧
// 最笨的办法
function get(){
num = 23.456322 + '';
var str = num.substring(0,num.indexOf(".") + 3);
console.log('直接截取小数点后两位,不做四舍五入');
console.log(str);
}
get();
代码实例:
功能:将浮点数四舍五入,取小数点后2位
function toDecimal(x) {
var f = parseFloat(x);
if (isNaN(f)) {
return;
}
f = Math.round(x*100)/100;
return f;
}
console.log(toDecimal(num));
功能:四舍五入,随意保留几位小数
function fomatFloat(num,pos){
// Math.pow(x,y) x 的 y 次幂
return Math.round(num*Math.pow(10, pos))/Math.pow(10, pos);
}
console.log("保留1位小数:" + fomatFloat(3.14559267, 1))
补充:input输入限制为小数点后两位
/**
* input输入保留两位小数
*/
function clearNoNum(obj){
// obj.value = obj.value.replace(/[^0-9-]+/,''); js写法
obj.val(obj.val().replace(/[^\d.]/g,"")); //清除“数字”和“.”以外的字符
obj.val(obj.val().replace(/\.{2,}/g,".")); //只保留第一个. 清除多余的
obj.val(obj.val().replace(".","$#$").replace(/\./g,"").replace("$#$","."));
obj.val(obj.val().replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')); //只能输入两个小数
if(obj.val().indexOf(".")< 0 && obj.val() !=""){//以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额
obj.val(parseFloat(obj.val()));
}
}