Javascript extjs的舍入问题

Javascript extjs的舍入问题,javascript,rounding,Javascript,Rounding,我需要将文本字段四舍五入到2位小数。下面是我设置的带有警报消息的代码。我担心的是,当我添加第三个或更多数字时,问题就会出现。 例如,100+10.11=110.11,(result=)然后110.11+10.11=120.22,但是,当我添加第三个数字120.22+10.11时,它等于130.3299999998,我希望它等于130.33 在添加的第三个数字中,最疯狂的是“result”字段等于130.3299999998 tbar: [{ text: 'Add',

我需要将文本字段四舍五入到2位小数。下面是我设置的带有警报消息的代码。我担心的是,当我添加第三个或更多数字时,问题就会出现。 例如,100+10.11=110.11,(result=)然后110.11+10.11=120.22,但是,当我添加第三个数字120.22+10.11时,它等于130.3299999998,我希望它等于130.33 在添加的第三个数字中,最疯狂的是“result”字段等于130.3299999998

 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
    }

    ]
tbar:[{
文本:“添加”,
工具提示:“添加行项目”,
处理程序:函数(){
var r=新的iLineItemRec({
i\u行\u项\u名称:“”,
i\行\项目\金额:“”
});
iLineItemGrid.stopEditing();
iLineItemStore.insert(0,r);
iLineItemGrid.startEditing(0,0);
Ext.getCmp('mike').setDisabled(false);
},
//这应该是scope:this还是scope:iLineItemGrid?
范围:本
},
{
文本:“删除”,
工具提示:“删除所选行项目”,
处理程序:函数(){
iLineItemGrid.stopEditing();
var r=iLineItemGrid.getSelectionModel().getSelectedCell();
iLineItemStore.removeAt(r[0]);
},
//这应该是scope:this还是scope:iLineItemGrid?
范围:本
},
{
xtype:'tbfill'
},
{
id:'迈克',
文本:“提交”,
工具提示:“提交行项目”,
//新的
//残疾人:对,,
处理程序:函数(){
iLineItemGrid.stopEditing();
//此代码是否将更改保存到数据库?
//iLineItemGrid.getStore().commitChanges();
iLineItemStore.commitChanges();
var iAmountTotalForLineItems=0;
var iamountIndudeField=Ext.getCmp('iAmountDue')。值;
总风险=0;
var结果=0;
iLineItemStore.each(函数(addAmount){
iAmountTotalForLineItems+=addAmount.get('i_line_item_amt');
});
警报('1 IAMountIndudeField:'+IAMountIndudeField+'iLineItemTotalHold:'+iLineItemTotalHold+'iAmountTotalForLineItems:'+iAmountTotalForLineItems);
如果(iLineItemTotalHold>iMountTotalForLineItems){
警报(“如果”);
TENTOTAL=iLineItemTotalHold-行项目的IAMOUNTTOTALL;
结果=IAMOUNT INDUNEFIELD-TENTOTAL;
警报('two:'+result+'='+iAmountInDueField+'-'+TENTOTAL);
}
else if(iLineItemTotalHold

var-iLineItemTotalHold=0

您可能会发现
toFixed()
方法很有用

从该页:

var n = 12345.6789;
n.toFixed();              // Returns "12346": note rounding, no fractional part
n.toFixed(1);             // Returns "12345.7": note rounding
n.toFixed(6);             // Returns "12345.678900": note added zeros

另请参见。

您可能会发现
toFixed()
方法很有用

从该页:

var n = 12345.6789;
n.toFixed();              // Returns "12346": note rounding, no fractional part
n.toFixed(1);             // Returns "12345.7": note rounding
n.toFixed(6);             // Returns "12345.678900": note added zeros
另见