今天遇到笔试题,最后结果要求四舍五入保留小数后五位。当时没想起怎么做,后来考虑了一下。
用到的函数:
-
Math.round()
: 可把一个数字舍入为最接近的整数(即四舍五入) -
toFixed(n)
: 保留n位小数(使用的是银行家舍入规则,借用网上看到的话是:四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一)
function round_retain(num, n) {
// num: 要处理的数 n: 保留位数
// 十进制向右移动n为,然后利用 Math.round() 四舍五入,再向左移动n位,最后利用 toFixed() 保留小数
return (Math.round(num * Math.pow(10, n)) / Math.pow(10, n)).toFixed(n);
}
当然也可以做一下判断,n为非负整数。
function round_retain(num, n = 0) {
if(Object.prototype.toString.call(n) === "[object Number]") {
n = parseInt(n);
} else {
throw new TypeError("请输入小数保留位数为正整数。");
}
if(n <= 0) {
return Math.round(num);
}
return (Math.round(num * Math.pow(10, n)) / Math.pow(10, n)).toFixed(n);
}
有更好的方法请在评论区告诉我,感谢你的观看。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。