vue千分位展示与保留两位小数

js数字千分位与保留两位小数展示总结

今天在敲代码的时候,产品提出了数字金额需要展示千分位的需求,而且千分位后面还要保留两位小数,不明所以的我当下就百度了一下展示千分位的方法,发现网上讲的大概是一下两种方法:

  • 方法1: 一个浏览器自带的方法,toLocaleString(),我用的google,其他的还没测过,这个方法还不错,可以用,代码如下。
let a = 3000
a.toLocaleString()   //3,000
  • 方法2:使用正则表达式,这是网上的方法,我使用之后无效果。代码如下:
function format (num) {
  return (num+ '').replace(/(\d{1,3})(?=(\d{3})+(?:$|\.))/g,'$1,');
}

而保留两位小数的方法是toFixed(x),x时传入的参数,规定保留几位小数,代码如下:

let a = 3000
let b = 3000.25565
a.toFixed(2)    // 3000.00
b.toFixed(2)   // 3000.25

这时候出现了问题,toFixed()和toLocaleString()这两个方法都只能使用数字类型的数据调用,而且转换完之后数据就变成了字符串类型,也就是说转换了一个就无法调用第二个,不同同时转换。所以我改变了策略,写了一个过滤器,直接手动拼接。首先将数字类型的val变成千分位,此时val变成了字符串,再判断它是否已经有小数,如果没有就拼接上 “.00”,如果只有一位小数,就再加一个0。最后只需要将过滤器加到需要过滤的值上就行啦。
indexOf(".")方法返回 “.” 在字符串val中的索引,如果没有就返回-1


// 假如 val = 3000
num_filter(val){      
     val =val.toLocaleString()    // 3,000
     if(val.indexOf(".")==-1){
       val=val+".00"     //3,000.00
     }else if(val.charAt(val.indexOf(".")==val.length-2)){
       val=val+"0"
     }
     return val
   }


// 假如 val = 3000.5
num_filter(val){      
     val =val.toLocaleString()    // 3,000.5
     if(val.indexOf(".")==-1){
       val=val+".00"    
     }else if(val.charAt(val.indexOf(".")==val.length-2)){
       val=val+"0"     // //3,000.50
     }
     return val
   }
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值