jquery 千分位如何加減乘除?

火爆浪子
  • 2.7k

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 加入進去,好像判斷成字串?
這能怎麼解決呢
我顯示的時候非得是千分位
但是要加入數字的時候就不行了

回复
阅读 2.4k
4 个回答
✓ 已被采纳

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

  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 里面的各种方法都 可以转的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏