2014-04-30 40 views
1

下面是一個簡單的JS代碼片段,JavaScript的算術返回意外值

$("#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

但它返回1400作爲值。爲什麼和我在哪裏做錯了?

+3

我沒經過你的代碼,但我的錢是在一個或多個值被視爲字符串,而不是作爲一個數字。 – j08691

+1

JSON中的所有數字都是字符串。你可以嘗試修復服務器腳本來返回數字。 – Barmar

回答

3

在JavaScript中,「5」+ 0 =「50」。確保你的變量是數字而不是字符串。

確定使用Number()函數。

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