JavaScript算法返回意外值

时间:2014-04-30 20:54:25

标签: javascript

这是一个简单的JS片段,

$("#product_code").live('change',function(){
    $.ajax({
        type:'POST',
        url:baseurl+'ajax/getproduct/'+$(this).val(),
        success:function(productdetails){
            var bill_type = $("#bill_type").val();
            var mrp_value = productdetails['mrp_value'];
            var quantity = productdetails['quantity'];

            $("#product_name").val(productdetails['product_name']);
            $("#packing").val(productdetails['packing']);
            $("#mrp_value").val(productdetails['mrp_value']);
            $("#batch_number").val(productdetails['batch_number']);
            $("#manufacturing_date").val(productdetails['manufacturing_date']);
            $("#expiry_date").val(productdetails['expiry_date']);
            $("#quantity").val(productdetails['quantity']);

            switch(bill_type)
            {
                case 'stockies':
                        var pts_value = 5; //In percent
                        var vat = 5; //In percent
                        var total_value = (mrp_value+(mrp_value*vat/100)-(mrp_value*pts_value/100))*quantity;                               
                    break;
                case 'pharmacy':
                        var pts_value = 3; //In percent
                        var vat = 5; //In percent
                        var total_value = (mrp_value+(mrp_value*vat/100)-(mrp_value*pts_value/100))*quantity;                               
                    break;
                case 'replacement':
                        var pts_value = 0; //In percent
                        var vat = 0; //In percent
                        var total_value = 0;
                    break;
            }

            $("#pts_value").val(pts_value);
            $("#vat").val(vat);

            $("#total_value").val(total_value);
        }
    }); 
});

我通过JSON AJAX请求得到的值是,

{"stock_id":"1","product_code":"AG123456","product_name":"Test Product","packing_area":"10x10","bottle_size":"170ml","product_type":"bottle","chemical_contents":"HCL","batch_number":"12","manufacturing_date":"2012-03-12","expiry_date":"2014-03-12","quantity":"4","packing":"Hard","purchase_value":"34","sales_value":"36","mrp_value":"35","status":"0","created_date":"2014-04-27 14:05:17","modified_date":null,"deleted_date":null}

如果我单独打印值,则显示

var mrp_value = 35;
var quantity = 4;

和指定的值是,     var pts_value = 5;     var vat = 5;

var total_value = (mrp_value+(mrp_value*vat/100)-(mrp_value*pts_value/100))*quantity;

所以,我希望这将执行如下,

  • (35 +(35 * 5/100) - (35 * 5/100))* 4
  • (35 +(1.75) - (1.75))* 4
  • (35 +(0))* 4
  • 140

但是它作为价值返回1400。我为什么以及在哪里犯错误?

2 个答案:

答案 0 :(得分:3)

在JavaScript中," 5" + 0 =" 50"。确保你的变量是数字而不是字符串。

使用Number()功能确保。

答案 1 :(得分:0)

请参阅此输入:

var pts_value = 5;
var vat = 5;
var mrp_value = 35;
var quantity = 4;
console.log((mrp_value+(mrp_value*vat/100)-(mrp_value*pts_value/100))*quantity);

var mrp_value = '35';
var quantity = '4';
console.log((mrp_value+(mrp_value*vat/100)-(mrp_value*pts_value/100))*quantity);

这给出了这个输出:

c:\it\nodejs>node.exe 01_hello.js
140
1400