js金额格式化(逗号隔开,保留2位小数)

举例
转换前:123456789.87654321
转换后:123,456,789.88

// 金额格式化
        const moneyFormat = (num, decimal = 2, split = ',') => {
            /*
                parameter:
                num:格式化目标数字
                decimal:保留几位小数,默认2位
                split:千分位分隔符,默认为,
                moneyFormat(123456789.87654321, 2, ',') // 123,456,789.88
            */
            function thousandFormat (num) {
                const len = num.length
                return len <= 3 ? num : thousandFormat(num.substr(0, len - 3)) + split + num.substr(len - 3, 3)
            }
            if (isFinite(num)) { // num是数字
                if (num === 0) { // 为0
                return num.toFixed(decimal)
                } else { // 非0
                var res = ''
                var dotIndex = String(num).indexOf('.')
                if (dotIndex === -1) { // 整数
                    res = thousandFormat(String(num)) + '.' + '0'.repeat(decimal)
                } else { // 非整数
                    // js四舍五入 Math.round():正数时4舍5入,负数时5舍6入
                    // Math.round(1.5) = 2
                    // Math.round(-1.5) = -1
                    // Math.round(-1.6) = -2
                    // 保留decimals位小数
                    const numStr = String((Math.round(num * Math.pow(10, decimal)) / Math.pow(10, decimal)).toFixed(decimal)) // 四舍五入,然后固定保留2位小数
                    const decimals = numStr.slice(dotIndex, dotIndex + decimal + 1) // 截取小数位
                    res = thousandFormat(numStr.slice(0, dotIndex)) + decimals
                }
                return res
                }
            } else {
                return '--'
            }
        }
        console.log('result:', moneyFormat(123456789.87654321)) // '123,456,789.88'
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您的问题是如何在HTML文件中使用Vue自定义过滤器,以格式化数字并在每三数字之间添加逗号,同时不保留小数点后两。我可以为您提供一个例子: 首先,您可以在template中使用Vue指令来绑定数据和方法。在这种情况下,我们将使用v-bind绑定购物车中的数量数据: ``` <div> 购物车中有{{cartCount | formatNumber}}件商品 </div> ``` 然后,我们需要在Vue实例中定义自定义过滤器。在这种情况下,我们将使用Vue.filter来定义名为formatNumber的过滤器: ``` Vue.filter('formatNumber', function (value) { let newValue = value.toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: 0 }) return newValue }) ``` 在这个过滤器函数中,我们使用toLocaleString方法来将数字格式化为货币格式,并且指定不保留小数点后的数。然后,我们将格式化后的值返回作为过滤器的结果。 最后,我们需要在Vue实例中使用我们定义的过滤器: ``` new Vue({ el: '#app', data: { cartCount: 12345 }, filters: { formatNumber: function (value) { let newValue = value.toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: 0 }) return newValue } } }) ``` 在这个Vue实例中,我们将formatNumber过滤器传递给filters选项,并将购物车数量绑定到cartCount变量上。然后,我们可以在template中使用购物车数量数据和我们定义的过滤器来显示购物车数量。 希望这个例子对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值