js 小数以整数形式进行四舍五入

/**
*  此方法以整数计算 不会有浮点为题
* @param val // 最好是字符串
* @param num //保留小数位数 默认2
* @returns {number} //如果传入val非数字返回0
*/

function(val, num){
    num = num ? num : 2; //默认两位小数
val = Number(val).toString() == 'NaN' ? 0 : Number(val);
var value = (val + '').split(".");
var decResult = ""; //小数结果
var intValue = value[0]; //整数
var decValue = value[1]; //小数
var recursion = function(decList, num, join){ //递归计算进一
var i = Number(decList[num - 1])
if(i + join > 9){
decList[num - 1] = '0'; //归零
if(num - 1 == 0){ //小数位都进一 给整数加一
intValue = Number(intValue) + 1;
return decList;
}else{
return recursion(decList, num - 1, join); //进一
}
}else{
decList[num - 1] = (i + join).toString();
return decList;
}
}
if(decValue){
var decList = decValue.split('');
if(decList.length > num){ //如果小数位多于截取位数进行计算
var join = 0;
if(decList[num] >= 5){ //截取位数的后一位大于5进一
join = 1;
}
decResult = recursion(decList, num, join).join("").substring(0, num); //截取小数位
}else{
decResult = decValue;
}
}
return Number(intValue + '.' + decResult);
}
posted @ 2019-08-08 10:39  谢尊方  阅读(1122)  评论(0编辑  收藏  举报