Javascript 乘两个小数
我正在尝试添加一个税务字段。我有这个整数工作,但我需要能够输入“.5” 我不知道该怎么解决这个问题,也许是因为伊斯南,但我认为这在这里是可以的 我当前的代码Javascript 乘两个小数,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试添加一个税务字段。我有这个整数工作,但我需要能够输入“.5” 我不知道该怎么解决这个问题,也许是因为伊斯南,但我认为这在这里是可以的 我当前的代码 $(document).ready(function() { calculateSum(); $(".txt").keyup(function() { $(".txt").each(function() { calculateSum(); }); }); })
$(document).ready(function() {
calculateSum();
$(".txt").keyup(function() {
$(".txt").each(function() {
calculateSum();
});
});
});
$("#tax").keyup(function() {
$('#total1').val(parseInt($(this).val()) * parseInt($('#subtotal').val()));
);
function calculateSum() {
var sum = 0;
$("#sum").val(sum.toFixed(2));
//iterate through each textboxes and add the values
$(".txt").each(function() {
//add only if the value is number
if (!isNaN(this.value) && this.value.length != 0) {
sum += parseFloat(this.value);
}
});
$("#sum").html(sum.toFixed(2));
var subtotal = document.getElementById("subtotal").value == "";
var subtotal = document.getElementById("subtotal").value = sum;
function getTax(tax) {
var taxFloat = parseFloat(tax)
if (isNaN(taxFloat)) {
return 1;
} else {
return taxFloat;
}
}
var total = getTax($('#tax').val()) * sum;
var total1 = document.getElementById("total1").value = total;
}
谢谢税收是以百分比为基础的。执行以下更改:
$("#tax").keyup(function() {
//$('#total1').val(parseInt($(this).val()) * parseInt($('#subtotal').val()));
calculateSum();
});
...
function getTax(tax) {
var taxFloat = parseFloat(tax)
if (isNaN(taxFloat)) {
return 1;
} else {
// 1(subtotal) + ?(tax%) -> total = (1 + tax%) * subtotal
return 1 + (taxFloat/100);
}
}
var total = getTax($('#tax').val()) * sum;
// round to 2 decimal digits
total = Math.round(total * Math.pow(10, 2)) / Math.pow(10, 2);
var total1 = document.getElementById("total1").value = total;
因此,对于5%输入5,对于0.5%输入5。5
更新:(不是真正的更新)当我看到更多答案时,我重复税务字段用法的逻辑错误。税收是全世界范围内的百分比,这意味着问题不仅在于密钥处理,还在于税收价值的使用方式。税收是基于百分比的。执行以下更改:
$("#tax").keyup(function() {
//$('#total1').val(parseInt($(this).val()) * parseInt($('#subtotal').val()));
calculateSum();
});
...
function getTax(tax) {
var taxFloat = parseFloat(tax)
if (isNaN(taxFloat)) {
return 1;
} else {
// 1(subtotal) + ?(tax%) -> total = (1 + tax%) * subtotal
return 1 + (taxFloat/100);
}
}
var total = getTax($('#tax').val()) * sum;
// round to 2 decimal digits
total = Math.round(total * Math.pow(10, 2)) / Math.pow(10, 2);
var total1 = document.getElementById("total1").value = total;
因此,对于5%输入5,对于0.5%输入5。5
更新:(不是真正的更新)当我看到更多答案时,我重复税务字段用法的逻辑错误。税是全球范围内的百分比,这意味着问题不仅在于密钥处理,还在于税值的使用方式。发现错误:
$("#tax").keyup(function() {
$('#total1').val(parseInt($(this).val()) * parseInt($('#subtotal').val()));
});
在这里,您可以使用parseInt
而不是parseFloat
解析税收,就像您在函数getTax
中所做的那样parseInt(“.5”)
给出NaN。在插入税款后,尝试在.txt
输入中插入值,当调用calculateSum
函数时,该功能将起作用
我不明白为什么在按下#tax
字段中的键时,您会使用与其他字段中正常按键时不同的计算方法。只需使用相同的侦听器函数,或者,如果您想要分割该功能,则调用该函数以显示来自#tax
键处理程序和calculateSum
函数的税款
此外,当其中一个输入被更新时,不需要执行四次calculateSum()
请参阅中更好的结构化源代码。未更正计算税金和总额的数学运算。发现错误:
$("#tax").keyup(function() {
$('#total1').val(parseInt($(this).val()) * parseInt($('#subtotal').val()));
});
在这里,您可以使用parseInt
而不是parseFloat
解析税收,就像您在函数getTax
中所做的那样parseInt(“.5”)
给出NaN。在插入税款后,尝试在.txt
输入中插入值,当调用calculateSum
函数时,该功能将起作用
我不明白为什么在按下#tax
字段中的键时,您会使用与其他字段中正常按键时不同的计算方法。只需使用相同的侦听器函数,或者,如果您想要分割该功能,则调用该函数以显示来自#tax
键处理程序和calculateSum
函数的税款
此外,当其中一个输入被更新时,不需要执行四次calculateSum()
请参阅中更好的结构化源代码。计算税收和总额的数学公式没有被更正。试试这个:
- 将包括函数在内的所有代码放入
结构中$(document).ready(function(){…})
- 在
calculateSum()中执行所有计算,包括税
- 始终使用jQuery,尤其是“$(…)”优先于
.getelementById(…)
- 附加
作为所有用户可输入字段的“keyup”处理程序calculateSum
- 清除代码中的各种垃圾
$(document).ready(function(){
function getTax() {
var taxFloat = parseFloat($("#tax").val());
return isNaN(taxFloat) ? 1 : taxFloat;
}
function calculateSum() {
var sum = 0;
$(".txt").each(function() {
if (this.value && !isNaN(this.value)) {
sum += parseFloat(this.value);
}
});
$("#subtotal").val(sum.toFixed(2));
$("#total1").val((getTax()*sum).toFixed(2));
}
$(".txt, #tax").keyup(calculateSum);
});
您可能希望将税务算法更改为更符合逻辑的算法。例如,对于输入的值5(%),乘数应为1.05。尝试以下方法:
- 将包括函数在内的所有代码放入
结构中$(document).ready(function(){…})
- 在
calculateSum()中执行所有计算,包括税
- 始终使用jQuery,尤其是“$(…)”优先于
.getelementById(…)
- 附加
作为所有用户可输入字段的“keyup”处理程序calculateSum
- 清除代码中的各种垃圾
$(document).ready(function(){
function getTax() {
var taxFloat = parseFloat($("#tax").val());
return isNaN(taxFloat) ? 1 : taxFloat;
}
function calculateSum() {
var sum = 0;
$(".txt").each(function() {
if (this.value && !isNaN(this.value)) {
sum += parseFloat(this.value);
}
});
$("#subtotal").val(sum.toFixed(2));
$("#total1").val((getTax()*sum).toFixed(2));
}
$(".txt, #tax").keyup(calculateSum);
});
您可能希望将税务算法更改为更符合逻辑的算法。例如,对于输入的值5(%),乘数应为1.05。在哪里遇到
NaN
<代码>!isNaN(“.5”)为我提供了true
。适当的缩进可以提高代码的可读性,并使其他人更容易帮助您。您的代码有点凌乱。您添加到“#tax”字段的keyup
函数是问题所在。您试图为税值@Bergi输入小数点是什么意思@madth3Did您在哪里遇到NaN
<代码>!isNaN(“.5”)为我提供了true
。适当的缩进可以提高代码的可读性,并使其他人更容易帮助您。您的代码有点凌乱。您添加到字段“#tax”中的keyup
函数就是问题所在。您的意思是@madth3Did您尝试为税值@BergiThanks输入一个小数点,我将在大约30分钟内尝试它。在回答之前,我修改了您的JSFIDLE代码,如上文所述,没有问题。请描述问题。@tman,不,您没有尝试@drdigit所做的。注意他是如何更改$(“#tax”).keyup
部分的。在tax文本框中键入.5确定是的,我错过了看到。。。我还以为就在这之后发生了如此多的变化,所以在回答之前,我会在大约30个迷你修改的JSFIDLE代码中进行尝试,就像上面所说的,没有问题。请描述问题。@tman,不,您没有尝试@drdigit所做的。注意他是如何更改$(“#tax”).keyup
部分的。在tax文本框中键入.5确定是的,我错过了看到。。。并认为正是在这之后,我非常希望看到你能用一个好的代码来执行这个功能。我建立在我所知道的基础上!但你的观点似乎是正确的我不确定