2015-10-13 111 views
0

现在我正在处理Web应用程序中的分类账类型程序。我使用angularJS来处理事件,但它是原始的Javascript处理实际计算Javascript随机无限数

var onEntriesSuccess = function(data) { 
    var sum = 0; 
    var isDebit = ($scope.account.active == "D" ? true : false); 
    angular.forEach(data, function(value, key){ 
     sum += (isDebit ? value.debit - value.credit : value.credit - value.debit); 
     value.balance = sum; 
    }); 

    $scope.entries = data; 
} 

这似乎工作正常;然而,当它运行对我的测试情况下,我发现这是我从来没有遇到过这样的错误之前,首先我会失败,因为当总和= 10496.82并尝试减去6912.00它

3584.8199999999997 

出来认为这是浮点数,并将数值从6912.02转换为6912.00。但是,这似乎并没有解决任何问题。任何人都可以解释一下吗?由于

+0

你可以做一个小提琴? –

+2

不需要小提琴,这是由于浮点数系统引起的JavaScript使用:http://stackoverflow.com/questions/1458633/how-to-deal-with-floating-point-number-precision-in-javascript – Saar

+0

你可以通过执行'0.1 + 0.2 == 0.3'来轻松地重现它,这将导致错误,因为在JS中'0.1 + 0.2'的实际结果将会是0.3000 ... 4这是由于Number系统JS使用 – Saar

回答