0

不久前,我发布了关于在值达到某个数字(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);

任何帮助都感激不尽。

干杯

4

2 回答 2

1

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

  • 避免在小数点后插入逗号。
  • 浮点数导致的舍入误差

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

  1. 以美分做所有事情。所以添加 1143(不是 11.43)
  2. 要格式化,首先将数字转换为字符串,然后将字符串拆分为前缀和最后两个字符。将逗号放入前缀中,然后添加句点和最后两个字符。

哦,你还需要做一些其他的事情:

  • 摆脱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);
于 2013-08-15T00:39:33.690 回答
0

here is a fiddle that shows how it should look. this is just one way to do it

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);
于 2013-08-15T02:38:34.503 回答