jQuery函数计算错误

时间:2015-11-10 17:47:02

标签: javascript jquery

我有这个功能

$("#exchange").on("change", function() {
    var am = $(this).val();
    var fee = $("#fee").val();
    var cost = $("#cost").val();
    var perc = fee / 100;
    var tot = perc * am;
    var fea = parseFloat(tot) + parseFloat(cost);
    var total = parseFloat(am) - parseFloat(tot) - parseFloat(cost);
    $("#return").val(total.toFixed(2));
    $("#due").val("$" + fea.toFixed(2));
});
$("#return").on("change", function() {
    var am = $(this).val();
    var fee = $("#fee").val();
    var cost = $("#cost").val();
    var perc = fee / 100;
    var tot = perc * am;
    var fea = parseFloat(tot) + parseFloat(cost);
    var total = parseFloat(am) + parseFloat(tot) + parseFloat(cost);
    $("#exchange").val(total.toFixed(2));
    $("#due").val("$" + fea.toFixed(2));
});

例如#exchange = 16.85,#fee = 11,#cost = 0

它应该计算#due = $ 1.85和#return = 15.00

这一切都是正确的。问题是反过来我需要它以相同的方式计算,但现在我得到这个

#return = 15,#fee = 11,#cost = 0

它会计算#due = $ 1.65和#exchange = 16.65

我明白为什么会这样做,因为它是从var am计算费用,这是该字段的价值,这使我很难完成我想要实现的目标,即两种方式都是一样的,但显然我不能在var am函数中将#exchange称为#return的值,因为此时字段将为空白,这将在{ {1}}所以我能做些什么来使我的所有计算方法都是相同的,我已经尝试了5个小时的大部分时间来弄清楚要做什么,但我迷路了,我们将非常感谢正确的方向。

2 个答案:

答案 0 :(得分:1)

您使用的是错误的公式。

使用+-----------+ | yell ... | | blue | | gree ... | | red | | grey | | brow ... | +-----------+ 代替brutto=netto/(1-fee/100)

您必须区分费用是应用于netto(brutto=netto*(1+fee/100))还是brutto(+netto*fee/100)。

答案 1 :(得分:1)

对我来说,这对你的代数来说就像一个简单的问题。我明白你要做什么。目前,您假设return = exchange - tot - costexchange = return + tot + cost。问题是您假设var tot在您的解决方案中是相同的,并且您的解决方案正在逆向工作。

但是,tot等于(fee/100) * exchange向前工作且(fee/100) * return向后工作,这打破了您对如何计算exchangereturn的假设。我的第一步是远离var am任务和命名,这似乎让您感到困惑,并将每个exchangereturn称为真实的。这可能有助于您形成正确的代数解决方案,然后可以在JavaScript中实现。

JSFiddle:https://jsfiddle.net/z6hrLbmc/