js/jq四舍五入保留指定位数,从保留位数开始末尾进位
1、正则校验字符串是否包含小数
// 是否带有小数
function isDecimal(val) {
let regExp= /^\d+\.\d+$/;
return regExp.test(val);
}
2、保留n位小数方法调用(字符串,保留位数)
// 保留n位小数方法调用
function toFixed(s,n){
let price=0;
if(isDecimal(s)){
let num = s.toString().split('.');
let s1=num[0],s2=num[1];
if(s2.length > n){
price=isFixed(s1+'.'+s2.substr(0, n+1),n);
}else{
price=Number(s);
}
}else{
price=Number(s);
}
return Number(price);
}
3、
// 小数四舍五入
function isFixed(s,n) {
let arr = String(s).split('.');
let s1 = arr[0],s2 = arr[1];
if(s2.length > n){
if(s2[s2.length-1]>=5){
let sx = Number(s2[s2.length-2])+1;
if(sx===10){
s = Number(s).toFixed(n-1);
}else{
s = s1+'.'+s2.substr(0,n-1)+sx;
}
}else{
if(Number(s2.substr(0,n)) === 0){
s = s1+'.';
for(let i=0;i<(n-1);i++){
s+="0";
}
s+=1;
}else{
s = s1+'.'+s2.substr(0,n);
}
}
}
return Number(s);
}