Javascript 随机无限数
Javascript random infinite numbers
现在我正在 Web 应用程序中开发分类帐类型的程序。我正在使用 angularJS 来处理事件,但处理实际计算的是原始 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。然而,这似乎并不能解决任何问题。有人可以解释一下吗?谢谢
我更新了你的fiddle
sum=parseFloat(sum.toPrecision(16))
这个解决方案来自:
Stack overflow Answer
现在我正在 Web 应用程序中开发分类帐类型的程序。我正在使用 angularJS 来处理事件,但处理实际计算的是原始 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。然而,这似乎并不能解决任何问题。有人可以解释一下吗?谢谢
我更新了你的fiddle
sum=parseFloat(sum.toPrecision(16))
这个解决方案来自:
Stack overflow Answer