Javascript:加$ +美分

时间:2013-08-15 00:29:15

标签: javascript numbers numeric

不久之前,我发布了一个关于在达到某个数字(1000)后为该值添加逗号的帖子。

目前,这个价值每秒上涨11美元,虽然我想实施一项改变,以便每秒上涨11.43美元。

例如:0,$ 11.43,$ 22.86 ......然后当它达到$ 1000时,它应该有逗号($ 1,024.56)。你应该得到漂移。

这是我的jsFiddle:http://jsfiddle.net/m9cey/14/

var millisecs = 1000;
setInterval(function() {
    var $badge = $('#badge');
    var num = parseInt($badge.text().replace(',', ''))+11;
    $badge.text(num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","));
}, millisecs);

非常感谢任何帮助。

干杯

2 个答案:

答案 0 :(得分:1)

添加11.43美元很容易。但是,有两个问题:

  • 避免在小数点后插入逗号。
  • 由浮点引起的舍入错误

为了解决这两个问题,我建议如下:

  1. 用美分做一切。所以加1143(不是11.43)
  2. 要格式化,首先将数字转换为字符串,然后将字符串拆分为前缀和后两个字符。将逗号添加到前缀中,然后添加句点和最后两个字符。
  3. 哦,你还需要做其他一些事情:

    • 摆脱你小提琴中的badge-support-text范围,因为你将明确加入分数
    • 在解析当前金额之前删除小数点和逗号。您还可以考虑创建一个闭包来维护自己增加的内部数据,因此您不必解析。

    这是对jsfiddle的修改,它完成了上述操作(闭包除外):

    var millisecs = 1000;
    setInterval(function() {
        var $badge = $('#badge');
        var num = (parseInt($badge.text().replace(/[,.]/g, ''))+1143).toString();
        var dollars = num.substring(0, num.length-2);
        var cents = num.substr(-2);
        $badge.text(dollars.replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '.' + cents);
    }, millisecs);
    

答案 1 :(得分:0)

这是fiddle,显示它应该如何显示。这只是一种方法

var millisecs = 10;
setInterval(function() {
  var $badge = $('#badge');

  var num = parseFloat($badge.text().replace(',', ''))+11.34;
  num = num.toFixed(2);

  var numString = num.toString().split('.');

  var dollars = numString[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
  var cents = numString[1];

  var str = [dollars, cents].join('.');

  $badge.text( str );
}, millisecs);