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。但是,这似乎并没有解决任何问题。任何人都可以解释一下吗?由于
你可以做一个小提琴? –
不需要小提琴,这是由于浮点数系统引起的JavaScript使用:http://stackoverflow.com/questions/1458633/how-to-deal-with-floating-point-number-precision-in-javascript – Saar
你可以通过执行'0.1 + 0.2 == 0.3'来轻松地重现它,这将导致错误,因为在JS中'0.1 + 0.2'的实际结果将会是0.3000 ... 4这是由于Number系统JS使用 – Saar