У меня есть эта функциявычисление функции 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
, потому что поле было бы пустым в это время, которое рассчитало бы его на NAN
, так что я могу сделать, чтобы сделать так, чтобы все мои вычисления были одинаковыми в обоих направлениях, я пытался найти лучшую часть из 5 часов, чтобы выяснить, что делать, но я потерян, точка в правильном направлении будет очень признательна.
'вар перхлорэтилена = плата/100;' вы проверили, если эта часть будет сделано правильно? вместо использования 'parseFloat()' в вычислениях - просто используйте его, когда вы читаете значения. – LiranBo
@LiranBo Да, это сделано правильно, и все правильно показывает, насколько расчеты идут, проблема в том, что я хочу, чтобы вычисления были одинаковыми в обоих направлениях, если '# exchange' = 16.85, что делает' # fee' = 1.85 и '# return' = 15, но если вы положите' # return' = 15, то он принимает 11% от него, делая плату только 1,65, но она должна быть 1,85, но я не уверен, как заставить ее рассчитать суммы. –
О, извините, я тогда не читал.по моему опыту, лучший способ сделать что-то подобное - просто сохранить номер перед обменом, а по возврату вы вернете это число. потому что, когда вы имеете дело с типом float, будет очень сложно вернуться к точному предыдущему значению. что означает, что нажатие кнопок обмена и возврата снова и снова может значительно изменить исходное число. – LiranBo