jquery 千分位如何加減乘除?

jquery

function formatDollar(num) {
  var p = num.toFixed(2).split(".");
  return "$" + p[0].split("").reverse().reduce(function(acc, num, i, orig) {
      return num == "-" ? acc : num + (i && !(i % 3) ? "," : "") + acc;
  }, "");
}

假設我原本數字是

$391,610

我從某個 value取得 90
我要加上 90 到這個 $391,610的時候
他會變成

$391,61090

沒有辦法將 90 加入進去,好像判斷成字串?
這能怎麼解決呢
我顯示的時候非得是千分位
但是要加入數字的時候就不行了

阅读 1.6k
评论
    4 个回答
    • 106

    重新写了下效果,用到的朋友可以借鉴下,有待优化

      function formatDollar(n,b){
        var aa = function(m){return String(m).split('').reverse().join('');};
        var bb = parseInt(n.replace(/[^0-9]/ig,""))+parseInt(b);
        return "$"+aa(aa(bb).replace(/(\d{3})/g,'$1,').replace(/\,$/,''));
      }
    
      var val= "$910,610";
      var str = formatDollar(val,90);
    
      console.log(str); //得到:$910,700

    针对上面代码,再做优化,改变正则机制

      function formatDollar(n,b){
        var aa = String(parseInt(n.replace(/[^\d|.]/g,''))+parseInt(b));
        return "$"+aa.replace(/(\d)(?=(\d{3})+$)/ig,'$1,');
      }
    
      var val= "$910,610";
      var str = formatDollar(val,90);
    
      console.log(str); //得到:$910,700

    下面再做优化,可带小数点,感觉这段代码还有待优化

      function formatDollar(n,b){
        var aa = parseFloat(n.replace(/[^\d|.]/g,''))+parseFloat(b);
        var bb = String(aa).split(".");
        var cc = bb[0].replace(/(\d)(?=(\d{3})+$)/ig,'$1,');
        var dd = bb[1]?cc+"."+bb[1]:cc;
       
        return "$"+dd;
      }
    
      var val= "$910,610.15";
      var str = formatDollar(val,90.16);
    
      console.log(str); //得到:$910,700.31

    以上带小数点再做优化,这个应该算是最终版了吧,无论带不带小数点都适应

      function formatDollar(n,b){
        var aa = parseFloat(n.replace(/[^\d|.]/g,''))+parseFloat(b);
        return "$"+aa.toLocaleString();
      }
    
      var val= "$910,610.15";
      var str = formatDollar(val,90.16);
    
      console.log(str); //得到:$910,700.31

      分开2个变量存。

      $391,610这是你需要展示的,存为一个变量A。
      391610这是你原始的数字,存为另一个变量B。就用这个来做运算操作,然后再通过千分位的方法,转成变量A。

        使用类型转换parseFloat()。截取出来的默认为字符串类型,需要使用显示类型转换转成数字类型才能进行加减乘除操作。

          使用 parseInt 或者 用 es6 中的 Number 里面的各种方法都 可以转的

            撰写回答

            登录后参与交流、获取后续更新提醒

            相似问题
            推荐文章