如何在JQuery中进行算术运算?

时间:2009-11-05 11:42:37

标签: jquery types math

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只对待总计,左计,余额,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);

5 个答案:

答案 0 :(得分:6)

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

用法示例:

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

答案 1 :(得分:2)

您是否尝试过parseFloat()?

documentation

答案 2 :(得分:2)

另一个选择是扩展jQuery以便能够直接从表单元素中读取数字

jQuery.fn.numVal = function() {
    return parseFloat(this.val()) || 0;
}

   ....

  var price=$('#addprice').numVal();
  var pass=$('#pass').numVal()

答案 3 :(得分:1)

i was looking for a solution too , and i saw a lot of questions here that doesn't work (even this one) in case someone wondering like me , here is my working solutiuon :

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

All the id's selector are input

答案 4 :(得分:0)

使用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