Увеличение числа на 0.1 jquery
Подскажите пожалуйста, почему при изменении количества бывают числа с 10 знаками после запятой?
function plus_modifier_count_product() {
var count = parseFloat($("#amount").val());
var new_count = count + 0.1;
$("#amount").val(new_count);
}
function minus_modifier_count_product() {
var count = parseFloat($("#amount").val());
var new_count = count - 0.1;
$("#amount").val(new_count);
}
.modifier_count {
display: inline-block;
width: 20px;
border: 2px solid blue;
text-align: center;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="modifier_count" onclick="minus_modifier_count_product();">-</div>
<input type="number" id="amount" placeholder="Количество" value="1.5" step="0.1">
<div class="modifier_count" onclick="plus_modifier_count_product();">+</div>
Ответы (2 шт):
Автор решения: Igor
→ Ссылка
function plus_modifier_count_product() {
var count = parseFloat($("#amount").val());
var new_count = count + 0.1;
$("#amount").val(Number(new_count.toFixed(3)));
}
function minus_modifier_count_product() {
var count = parseFloat($("#amount").val());
var new_count = count - 0.1;
$("#amount").val(Number(new_count.toFixed(3)));
}
.modifier_count {
display: inline-block;
width: 20px;
border: 2px solid blue;
text-align: center;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="modifier_count" onclick="minus_modifier_count_product();">-</div>
<input type="number" id="amount" placeholder="Количество" value="1.5" step="0.1">
<div class="modifier_count" onclick="plus_modifier_count_product();">+</div>
Автор решения: humster_spb
→ Ссылка
Потому что в JavaScript есть проблема потери точности при операциях с дробными числами. Подробнее об этом написано здесь.
Можно ли обойти проблему? Конечно, наиболее надёжный способ — это округлить результат используя метод toFixed(n)