我正在尝试计算一系列应该与原始值汇总的值。
如果查看上面的示例,您可以看到汇总成本和计费数字分别汇总到239.99和219.98。他们显然需要分别聚合到240和220.
当小时数改变时(通过使用jQuery on change功能)计算成本和计费数字。乘数是通过将Original Value Hours
除以下面Calculated Values Hours
中指定的数字来确定的。
(0.2 / 0.7)= 0.28571428571428575
(0.3 / 0.7)= 0.4285714285714286
不言而喻,数字需要汇总到原始值。
这个问题无疑与浮点精度和舍入有关,我尝试使用以下函数但没有成功: -
function to2DP(num, fixed) {
var re = new RegExp('^-?\\d+(?:\.\\d{0,' + (fixed || -1) + '})?');
return num.toString().match(re)[0];
}
$("#splitTimeContainer").on("change", ".changeHours", function(e) {
var splitID = $("#splitID").val();
var splitOrigCost = $("#splitOrigCost").val();
var splitOrigBilled = $("#splitOrigBilled").val();
var splitOrigHours = $("#splitOrigHours").val();
var i = 1;
var divideMe = $(this).val();
var coEfficient = (divideMe/splitOrigHours);
var newCost = to2DP((coEfficient * splitOrigCost), 2);
var newBilled = to2DP((coEfficient * splitOrigBilled), 2);
var parent = $(this).parent().parent();
parent.find('.changeCost').val(newCost);
parent.find('.changeBilled').val(newBilled);
});
除了使用toFixed外,还没有成功。
任何人对我如何实现这一目标都有任何建议?
答案 0 :(得分:0)
这个问题更多的是关于舍入和数学。
在这个特殊的例子中,这种四舍五入将达到240,并且收费为220.01。 我认为这个问题没有最优解决方案。 考虑一下:
Hours: 0.9, Cost 100
hours: 0.3, cost 33.33
hours: 0.3, cost 33.33
hours: 0.3, cost 33.33
如何使这项工作无法实现。
答案 1 :(得分:0)
您可能需要考虑将除法期间丢失的金额添加到一个或多个值。
Splitwise也这样做是为了确保没有价值损失。