jQuery添加数字不正确与小数和

时间:2016-11-02 01:20:20

标签: javascript jquery

我有一个js文件,用于计算用户点击时的所有总数,这将总结所有点击的行,但如果数字包含小数,则无法正确添加,而是始终将00放在小数上

function calculateRevenue(){
        var sum = 0;
        $("input#check_count_revenue[type=checkbox]:checked").each(function() {
            sum += parseInt($(this).attr("data-revenuecount"));
        });

        $("#revenue_count_totals").html(sum.toFixed(2)).digits();
    };

然后调用这个函数

table.on("change","input#check_count_revenue", function() {
        $(this).closest("td").addClass("checked_revenue");
        calculateRevenue();
        if ($(this).prop("checked") === false)   
        $(this).closest("td").removeClass("checked_revenue");
    });

如果该行包含以下内容

 12.00
 13.00

这将正确地总计25.00

但是

 12.00
 13.01

仍然有25.00而不是25.01

有什么想法吗?我已经尝试用parseFloat代替parseInt,不解析

3 个答案:

答案 0 :(得分:-1)

这不仅是JavaScript的常见问题,也是处理浮点运算的几种编程语言。

从StackOverflow查看此answer,此explanation查看它们在JS中的工作方式,以及此CS docs以获取有关它的更多信息。

我认为重要你在给出任何“解决方案”之前就已经理解了这个问题,但如果你真的需要一个认真可靠的工具来处理浮点值,我建议你使用{{3 }}

答案 1 :(得分:-1)

你可以使用toFixed()方法

var num = 5.56789;
var n = num.toFixed(2);

http://www.w3schools.com/jsref/jsref_tofixed.asp

答案 2 :(得分:-2)

看看这是否适合您:

function sumFix(){
  var a = [].slice.call(arguments), d = a.pop(), s = 0, p = Math.pow(10, d);
  for(var i=0,l=a.length; i<l; i++){
    s += a[i]*p;
  }
  return (s/p).toFixed(d);
}

然后你可以这样做:

function calculateRevenue(){
  var nums = [];
  $('input#check_count_revenue[type=checkbox]:checked').each(function(){
    nums.push(parseFloat($(this).attr("data-revenuecount")));
  });
  $('#revenue_count_totals').html(sumFix.apply(null, nums.concat(2));
};

sumFix接受任意数量的参数,最后一个是您需要的小数位。

正常使用而不使用.apply()

console.log(sumFix(12.00, 13.01, 2));