2012-08-09 62 views
1

我需要将文本字段舍入为2位小数。这是带有我设置的警报消息的代码。我担心的是当我添加第三个或更多的数字时就会出现问题。 一个例子是100 + 10.11 = 110.11,(结果=)然后110.11 + 10.11 = 120.22然而,当我加上第三个数字120.22 + 10.11时,它等于130.32999999999998,我希望它等于130.33 第三个数字结果“字段等于130.32999999999998Ext JS舍入问题

tbar: [{ 
     text: 'Add', 
     tooltip:'Add the line item', 
     handler : function(){ 
      var r = new iLineItemRec({ 
       i_line_item_name: '', 
       i_line_item_amt: '' 
      }); 
      iLineItemGrid.stopEditing(); 
      iLineItemStore.insert(0, r); 
      iLineItemGrid.startEditing(0, 0); 
      Ext.getCmp('mike').setDisabled(false); 
     }, 
     //Should this be scope:this or scope:iLineItemGrid? 
     scope:this 
    }, 
    { 
     text: 'Delete', 
     tooltip:'Remove the selected line item', 
     handler: function(){ 
      iLineItemGrid.stopEditing(); 
      var r = iLineItemGrid.getSelectionModel().getSelectedCell(); 
      iLineItemStore.removeAt(r[0]); 
     }, 
     //Should this be scope:this or scope:iLineItemGrid? 
     scope:this 
    }, 

    { 
     xtype: 'tbfill' 
    }, 

    { 
     id: 'mike', 
     text: 'Submit', 
     tooltip:'Submit the line item', 
     //new 
     //disabled: true, 
     handler: function(){ 
      iLineItemGrid.stopEditing(); 
      // Will this code save changes to the database? 
      //iLineItemGrid.getStore().commitChanges(); 
      iLineItemStore.commitChanges(); 

      var iAmountTotalForLineItems = 0; 
      var iAmountInDueField = Ext.getCmp('iAmountDue').value; 
      var tempTotal = 0; 
      var result = 0; 
      iLineItemStore.each(function(addAmount){ 
       iAmountTotalForLineItems += addAmount.get('i_line_item_amt'); 

      }); 

      alert('1 iAmountInDueField: ' + iAmountInDueField +' iLineItemTotalHold: '+iLineItemTotalHold + ' iAmountTotalForLineItems: '+ iAmountTotalForLineItems); 
      if (iLineItemTotalHold > iAmountTotalForLineItems ){ 
       alert ('if'); 
       tempTotal = iLineItemTotalHold - iAmountTotalForLineItems; 
       result = iAmountInDueField - tempTotal; 
       alert('two: '+result+' = '+iAmountInDueField+' - '+tempTotal); 

      } 

      else if (iLineItemTotalHold < iAmountTotalForLineItems ){ 
       alert ('if2'); 
       tempTotal = iAmountTotalForLineItems - iLineItemTotalHold; 
       result = iAmountInDueField + tempTotal; 
       alert('3: '+result+' = '+iAmountInDueField+' + '+tempTotal); 
      } 

      iLineItemTotalHold = iAmountTotalForLineItems; 

      Ext.getCmp('iAmountDue').setValue(result); 
      this.setDisabled(true); 
     } 
     //scope:this 
    } 

    ] 

var iLineItemTotalHold = 0;

回答