jquery 千分位如何加減乘除?

发布于 2022-09-11 17:08:54 字数 530 浏览 22 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

我做我的改变 2022-09-18 17:08:54

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

又爬满兰若 2022-09-18 17:08:54

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

独闯女儿国 2022-09-18 17:08:54

分开2个变量存。

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

梅倚清风 2022-09-18 17:08:54

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

  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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文