首页 > 编程语言 > 详细

Javascript精确小数四舍五入

时间:2020-01-14 13:19:10      阅读:75      评论:0      收藏:0      [点我收藏+]

解决了 Math.round(number * 100) / 100 中对如9.995处理结果错误的问题。

需要注意的是,输入的值仍然是有限制的。当小数位数过多,如9.9449999999999999,此时仍会因超出JavaScript能表示的小数范围而出错(该数处理结果为9.95而非9.94,因为超出的原因数值被自动变更为了9.945)。

 

function getRounding(number, digit) {
if ( typeof digit === ‘undefined‘) digit = 2;
//console.log(digit)
let num = Math.pow(10, digit);
//console.log("num: " + num)
let multipledNum = num * number;
//console.log("multipledNum: " + multipledNum)
let flooredNum = Math.floor(multipledNum);
//console.log("flooredNum:" + flooredNum)
let numberStr = number.toString();
//console.log("numberStr:" + numberStr)
let indicatorIndex = numberStr.indexOf(‘.‘);
//console.log("indicatorIndex: " + indicatorIndex)
if (indicatorIndex > -1) {
let indicator = parseInt(numberStr.slice(indicatorIndex + digit + 1, indicatorIndex + digit + 2));
//console.log("indicator: " + indicator)
if (isNaN(indicator)) {
//console.log("no indicator")
return number
}
if (indicator < 5) return flooredNum / num;
return (flooredNum + 1) / num;
}
else {
//console.log("number: " + number)
return number;
}
}

 

Javascript精确小数四舍五入

原文:https://www.cnblogs.com/JamSun/p/12191053.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!