js保留小数位

JavaScript019

js保留小数位,第1张

一、我们首先从经典的“四舍五入”算法讲起

1、四舍五入的情况

2、不四舍五入

第一种,先把小数边整数:

第二种,当作字符串,使用正则匹配:

注意:如果是负数,请先转换为正数再计算,最后转回负数

再分享一个经典的解决四舍五入问题后js保留两位小数的方法:

//四舍五入保留2位小数(若第二位小数为0,则保留一位小数)

     function isNumber(val) {

            let result = /^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$/.test(val)

         return result

        }

        function numberFixed(val,n=2) { 

            if(isNumber(val)){

                let str = val + ''

                if(str.includes('.')){

                    let arr = str.split('.')

                    let result = arr[0] + '.' + arr[1].substring(0,n)

                    return Number(result)

                } else{

                    return Number(val)

                }

                return Number(str.substring())

            }else{

                return val

            }

        }

        numberFixed(0.2,6)//0.2

        numberFixed('0.643') //0.64

        numberFixed(240.3536363625,6)//240.353636

        numberFixed('hello') // hello

1、向下取整 注:Math.floor()不进行四舍五入,直接舍去小数部分 2、向上取整 注:Math.ceil()只要有小数且小数不为0,取整都直接给个位+1,小数位都舍去 3、四舍五入 注:Math.round()() 小数第一位小于5舍去,大于等于5向前进一位 4、保留小数位数 注:toFixed(n) n为要保留的小数位数,toFixed()会做四舍五入处理 5、科学计数法 注:toPrecision(1) n为要保留的位数,toPrecision() 会做四舍五入处理 6、去掉小数部分多余的0