我有两个文本框。我在一个文本框中输入数字。我为该文本框编写了以下jQuery,当从第一个文本框开始焦点时执行该文本框。 jQuery代码从第一个文本框中获取输入的值,并将其乘以十进制数34.95,并在第二个文本框中显示答案。
代码正在进行计算,因为
当我在第一个文本框中输入值1000时,它在第二个文本框中给出答案34950,当我在第一个文本框中输入值100时,它在第二个文本框中给出答案3495.0000000000005。
**请任何人告诉我这是什么问题。问题在于我的jQuery代码。
我也希望以小数点显示答案。
在小数点后,答案总是应该只有两位数。所以如何实现这一点。**
这是我的jQuery代码。
$("#id_pvalue").focusout(function() {
q=$("#id_pvalue").val();
var ans=q*34.95;
$("#id_tvalue").val(ans);
});
答案 0 :(得分:4)
虽然Darin的答案应该有效,但这是另一种将你的价值限制在两位小数的方法:
var ans=q*34.95;
ans = ans.toFixed(2);
答案 1 :(得分:2)
val函数返回字符串。您需要将其转换为数字:
$('#id_pvalue').focusout(function() {
var q = parseFloat($(this).val());
if (!isNaN(q)) {
var ans = Math.round(q * 34.95 * 100) / 100;
// If you always want to have two decimals after the separator
// you could use the toFixed function:
// var ans = (q * 34.95).toFixed(2);
$('#id_tvalue').val(ans);
}
});
答案 2 :(得分:2)
听起来像通常的 Floating Point Issue。有关使用JavaScript格式化数字的信息,请参阅this little tutorial。
答案 3 :(得分:1)
..除了以上所有答案之外,如果你想了解基于计算机的浮点运算的局限性,请看下面的文章
What Every Computer Scientist Should Know About Floating-Point Arithmetic
答案 4 :(得分:0)
尝试
$("#id_pvalue").blur(function() {
q= parseFloat($(this).val());
var ans=q*34.95;
$("#id_tvalue").val(ans);
});
答案 5 :(得分:0)
$("#id_pvalue").focusout(function() {
var q= parseFloat($("#id_pvalue").val());
var ans= (q*34.95).toFixed(2);
$("#id_tvalue").val(ans);
});