2016-03-22 67 views
0

我正在使用过滤器从ng-repeat中的动态数据中获取总计。我的可能是我不能把小数降到2位。这里是我的过滤器:角度问题解析浮点数

app.filter('sumByKey', function() { 
    return function (data, key) { 
     if (typeof (data) === 'undefined' || typeof (key) === 'undefined') { 
      return 0; 
     } 

     var sum = 0; 
     for (var i = data.length - 1; i >= 0; i--) { 
      //sum += parseFloat(data[i][key]); 
      sum += Math.round((data[i][key]) * 1e12)/1e12; 
     } 

     return sum; 
    }; 
}); 

我注释掉“parseFloat”,因为它没有工作,试图用“toFixed(2)”给了不同寻常的unreadible结果。我在IE和Chrome测试这一点,我仍然得到以下几点:

enter image description here

这不是重复到由回答了这个问题:“toFixed(2)”正如我上面表述为“toFixed( 2)“返回长时间疯狂的不可读数字。

任何援助非常感谢!

+0

你能详细说一下'toFixed(2)'“给出了不寻常的结果吗? –

+1

请注意'toFixed'有一个返回值类型的字符串,而不是数字。这可能解释你的问题。 –

+0

有没有办法解决这个问题? –

回答

0

尝试Number.toPrecision函数,例如

var sum = 0; 
for (var i = data.length - 1; i >= 0; i--) 
    sum += parseFloat(data[i][key]); 

return parseFloat(sum.toPrecision(2)); 
+0

太棒了!它做到了!太感谢了! –