js保留小数并四舍五入方法封装

js常用的保留小数的方法:

1、toFixed()

例如: 

     let val=100
        console.log(val.toFixed(2))//100.00
        val=100.005
        console.log(val.toFixed(2))//100.00
        val=100.0050
        console.log(val.toFixed(2))//100.00
        val=100.0051
        console.log(val.toFixed(2))//100.01

这种方法大部分场合都适用,但是存在尾数是5的时候会不进位的问题

2、Math.round()

例如:

        let val1=100.00
        console.log(Math.round(val1*100)/100)//100
        val1=100.01
        console.log(Math.round(val1*100)/100)//100.01    

这种方法存在当数字是整数或者小数点后数字为0,或者原数字长度比我们要保留的长度短时,保留有问题的情况

3、封装方法,适用所有场合,并完全符合数学中的四舍五入规则

复制代码
// val要保留的数据,places保留位数,type返回类型(1数字,2字符串)
        function keepDecimals(val, places, type) {
            let num = val + '';
            let numStart = num.split('.')[0]
            let numEnd = num.split('.')[1]
            let powVal = Math.pow(10, places)
            if (numEnd) {
                console.log(numEnd,111)
                num = Math.round(num * powVal) / powVal + ''
                if (num.split('.')[1]&&num.split('.')[1].length < places) {
                    for (let n = 0; n < places - num.split('.')[1].length; n++) {
                        num += '0'
                    }
                }
            } else {
                num = numStart + '.'
                for (let n = 0; n < places; n++) {
                    num += '0'
                }
            }
            return type==1?num=num*1:num=num+''
        }
        let num = keepDecimals(10, 3, 2)
复制代码

 

posted @   Alex-Song  阅读(945)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示