Попытка получить точку безубыточности (БЭП) и продать стоимость с помощью jquery.
function roundToTwo(num) {
return +(Math.round(num + "e+2") + "e-2");
}
$("#cost").on("change keyup paste", function() {
var cost = Number($('#cost').val());
var text
var total_cost = roundToTwo(((cost * 18) / 100) + cost);
var profit = -0.5;
var sell = cost + 0.01;
while (profit <= 0) {
sell = sell + 0.01;
profit = roundToTwo(sell - total_cost);
text += "<br />New Sell " + sell + " and profit " + profit;
}
var bep = roundToTwo(sell - total_cost);
$('#bep_display').text(bep);
document.getElementById("testing").innerHTML = text;
})
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<input type = "number" class = "form-control" id = "cost" placeholder = "cost" name = "cost">
<h1 id = "bep_display">
</h1>
<p id = "testing"></p>
Теперь, запустив приведенный выше код, я ввел на входе 1, поэтому результат (BEP) должен быть 0, но он дает NaN
@MaheerAli Итак, какой альтернативный метод?
Проблема в этой строке:
var bep = roundToTwo(sell - total_cost);
Одним из решений является исправление ваших десятичных знаков, например:
var bep = roundToTwo(sell.toFixed(8) - total_cost.toFixed(8));
это означает, что ваша десятичная дробь будет зафиксирована на 8, например; 3.20348374 вы можете изменить его по своему желанию, если вы скажете .toFixed(4), то у вас будет только 4 десятичных знака, например: 4.8765
Потому что ваш ответ возвращается с e
, поэтому он показывает NaN
. Пытаться:
var bep = parseFloat(sell - total_cost).toFixed(8);
Это даст вам результат 0.00000000.
Если вам нужен результат как 0. Добавлять:
bep = roundToTwo(bep);
function roundToTwo(num) {
return +(Math.round(num + "e+2") + "e-2");
}
$("#cost").on("change keyup paste", function() {
var cost = Number($('#cost').val());
var text
var total_cost = roundToTwo(((cost * 18) / 100) + cost);
var profit = -0.5;
var sell = cost + 0.01;
while (profit <= 0) {
sell = sell + 0.01;
profit = roundToTwo(sell - total_cost);
text += "<br />New Sell " + sell + " and profit " + profit;
}
var bep = parseFloat(sell - total_cost).toFixed(8);
bep = roundToTwo(bep);
$('#bep_display').text(bep);
document.getElementById("testing").innerHTML = text;
})
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<input type = "number" class = "form-control" id = "cost" placeholder = "cost" name = "cost">
<h1 id = "bep_display">
</h1>
<p id = "testing"></p>
Кажется, это потому, что для сломанных чисел с плавающей запятой в javascript