我有这个功能
$("#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个小时的大部分时间来弄清楚要做什么,但我迷路了,我们将非常感谢正确的方向。
答案 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 - cost
和exchange = return + tot + cost
。问题是您假设var tot
在您的解决方案中是相同的,并且您的解决方案正在逆向工作。
但是,tot
等于(fee/100) * exchange
向前工作且(fee/100) * return
向后工作,这打破了您对如何计算exchange
和return
的假设。我的第一步是远离var am
任务和命名,这似乎让您感到困惑,并将每个exchange
和return
称为真实的。这可能有助于您形成正确的代数解决方案,然后可以在JavaScript中实现。
JSFiddle:https://jsfiddle.net/z6hrLbmc/