【问题标题】:How to conduct arithmetic operations in JQuery?如何在 JQuery 中进行算术运算?
【发布时间】:2009-11-05 11:42:36
【问题描述】:
var price     = $('#addprice').val();
var pass      = $('#pass').val();
var total     = $('#totalprice').attr('value')
var left      = $('#leftquota').attr('value')
var balance   = $('#balance').attr('value')
var tprice    = total + price;   // total price
var bprice    = balance + price; // balance price
var unitprice = bprice / left;   // unit price

$('#totalprice').text(tprice);
$('#balance').text(bprice);
$('#unitprice').text(unitprice);

JQuery 只处理 total、left、balance、tprice、bprice、unitprice 等。作为字符串,但实际上有小数而不是字符串。当我对它们应用 parseInt() 时,它们都变成了整数,这不是我想要的。如何进行算术运算?操作数是小数。

我使用 parseFloat();但它是一样的。 var tprice=total+price的操作;只是字面上将两个小数(字符串)结合在一起。

$('#add_price').click(function(){
    var price=$('#addprice').val();
    var pass=$('#pass').val();
    var total=$('#totalprice').attr('value')
        var left=$('#leftquota').attr('value')
        var balance=$('#balance').attr('value')
        total=parseFloat(total);
        left=parseFloat(left);
        balance=parseFloat(balance);
        var tprice=total+price;
        var bprice=balance+price;
        var unitprice=bprice/left;

        $('#totalprice').text(tprice);
        $('#balance').text(bprice);
        $('#unitprice').text(unitprice);

【问题讨论】:

  • 不是 jQuery 将它们视为字符串,而是 javascript 将它们视为字符串(因为它们是字符串)。 jQuery 只获取值。 Javascript 做算法,jQuery 只是 javascript 之上的一个库。
  • 请提供您的数字的初始字符串值和算术运算结果。
  • 请记住,JavaScript 并不真正做十进制数,例如:0.06 + 0.01 = 0.699999999

标签: jquery types math


【解决方案1】:

您可以在这种情况下使用parseFloat。它将返回浮点值

使用示例:

var tprice = parseFloat(total) + parseFloat(price);

【讨论】:

    【解决方案2】:

    你试过 parseFloat() 吗?

    documentation

    【讨论】:

      【解决方案3】:

      另一种选择是扩展 jQuery,使其能够直接从表单元素中读取数字

      jQuery.fn.numVal = function() {
          return parseFloat(this.val()) || 0;
      }
      
         ....
      
        var price=$('#addprice').numVal();
        var pass=$('#pass').numVal()
      

      【讨论】:

        【解决方案4】:

        我也在寻找解决方案,我在这里看到了很多不起作用的问题(甚至是这个问题),以防有人像我一样想知道,这是我的工作解决方案:

        $("#apport").keyup( 
        function(){
        var apport = parseFloat($("#apport").val());
        var montant = parseFloat($("#montant-financer").val());
        var moinmontant = parseFloat(montant) - parseFloat(apport);     
        $("#montant-financer").val(moinmontant);    
        }
        );
        

        所有id的选择器都是输入

        【讨论】:

          【解决方案5】:

          使用 parseFloat、parseInt,或者在字符串之前放置一个 +,如果你确定它包含一个数字:

          var text = "123.456";
          var number = +text; // now 'number' is Number, and not String
          

          还有一些事情告诉我,这应该比 parseInt 或 parseFloat 工作得更快。

          Number 对象的另一种使用方式:

          var text = "123.456";
          var number = Number(text);
          

          但这是最慢的方式。

          更多信息: http://www.jibbering.com/faq/faq_notes/type_convert.html#tcNumber

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-05-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-02-27
            • 2019-04-30
            相关资源
            最近更新 更多