添加和减去浮点数的问题。
所以如果以0.2开始
0.2 + 0.2 = 0.4
0.4 + 0.2 = 0.6000000000000001(应为0.6)
我发现我必须使用" toFixed(2)"但这是为了字符串?为了让它变得正常,我在代码中改变了什么:
// The button to increment the product value
$(document).on('click', '.product_quantity_up', function(e){
e.preventDefault();
var arrayData = $(this).data('field-qty');
var arr = arrayData.split(';');
for (i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
fieldName = arr[0];
var currentVal = parseFloat($('input[name='+fieldName+']').val());
var minimalVal = parseFloat($('input[name='+fieldName+']').attr("data-minimal_quantity"));
if (!isNaN(currentVal) && currentVal < minimalVal) {
$('input[name='+fieldName+']').val(minimalVal);
$(this).parent().parent().find(".ajax_add_to_cart_button").attr("data-minimal_quantity",minimalVal);
}
else {
$('input[name='+fieldName+']').val(currentVal + parseFloat(arr[1])).trigger('keyup');
$(this).parent().parent().find(".ajax_add_to_cart_button").attr("data-minimal_quantity",currentVal + parseFloat(arr[1]));
}
$('#'+fieldName).change();
});
答案 0 :(得分:2)
您遇到的问题是浮点数如何存储信息。 如果你需要使用精确的小数位数,我建议你使用整数,并格式化输出以将最后n个位置反映为小数。
例如,使用2位小数,1.00
实际上是100
。
0.2 + 0.2 = 0.4
将以20 + 20 = 40
要将此字符打印给用户,您将整数值解析为字符串,并将输出格式化为"0.40"
(字符串)