jQuery中的数学计算问题

时间:2010-04-09 12:08:46

标签: jquery

我有两个文本框。我在一个文本框中输入数字。我为该文本框编写了以下jQuery,当从第一个文本框开始焦点时执行该文本框。 jQuery代码从第一个文本框中获取输入的值,并将其乘以十进制数34.95,并在第二个文本框中显示答案。

代码正在进行计算,因为

当我在第一个文本框中输入值1000时,它在第二个文本框中给出答案34950,当我在第一个文本框中输入值100时,它在第二个文本框中给出答案3495.0000000000005。

**请任何人告诉我这是什么问题。问题在于我的jQuery代码。

  1. 我也希望以小数点显示答案。

  2. 在小数点后,答案总是应该只有两位数。所以如何实现这一点。**

  3. 这是我的jQuery代码。

      $("#id_pvalue").focusout(function() {
            q=$("#id_pvalue").val();
            var ans=q*34.95;
            $("#id_tvalue").val(ans);
      });
    

6 个答案:

答案 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);
  });