格式编号,包含数千个分隔符和2个小数位

时间:2017-01-09 10:03:19

标签: jquery

我目前正在使用jquery填充div,但需要使用千位分隔符和两位小数格式化输出,同时将输出保持为数字。

仅供参考我目前正在使用以下方式填充div:

var prev_count = 120;
var new_count = 20.50;

    var count_till = prev_count < new_count ? new_count : new_count - 1;
    jQuery({ Counter: prev_count }).animate({ Counter: count_till }, {
        duration: 600,
        easing: 'swing',
        step: function () {
            jQuery("#count_div").text(Math.ceil(this.Counter));
        }
    });

起始变量是120,这意味着倒计时到20.50,但它结束于20,而不是20.50,这是否可能,如果是这样,我将怎么做呢?

这是我的jsfiddle

2 个答案:

答案 0 :(得分:1)

Math.Ceil返回大于或等于给定数字的最小整数。 Integers do not have fractions(这就是你要找的)

您需要将输出数字的行替换为:

jQuery("#count_div").html(this.Counter.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, '$1,'));

这是一个有效的JSFiddle:https://jsfiddle.net/12g2pj4L/2/

答案 1 :(得分:0)

好的,所以我设法自己解决这个问题,使用函数添加千位分隔符,并使用toFixed(2)设置小数位,代码如下:

$.fn.digits = function(){ 
    return this.each(function(){ 
        $(this).text( $(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,") ); 
    })
}

var prev_count = "1125";
prev_count = prev_count.split(',').join('');
prev_count = parseInt(prev_count);

var new_count = 1320.50;

var count_till = prev_count < new_count ? new_count : new_count;
jQuery({ Counter: prev_count }).animate({ Counter: count_till }, {
    duration: 7000,
    easing: 'swing',
    step: function () {
    jQuery("#count_div").html(this.Counter.toFixed(2)).digits();

    }
});

并摆弄here