今天遇到笔试题,最后结果要求四舍五入保留小数后五位。当时没想起怎么做,后来考虑了一下。

用到的函数:

  • 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);
        }

有更好的方法请在评论区告诉我,感谢你的观看。


無常
11 声望2 粉丝