*/
    public BigDecimal calculate(){
        
        if( postfixExp.size() == 0 )    //如果尚未转换得到后缀表达式
            getPostfixExp();

        Stack<Element> stack = new Stack<Element>();
        int postfixExpLength = postfixExp.size();
        for(int i=0; i<postfixExpLength; i++){      //遍历后缀表达式每一个元素
            Element e = postfixExp.get(i);
            if( e.isNumber() ){  
                stack.push( e );
            }else{
                Element e1 = stack.pop();
                Element e2 = stack.pop();
                Element e3 = new Element();
                switch( e.getSign() ){
                    case '+':  e3.setNumber( e2.getNumber().add(e1.getNumber()) );
                               break;
                    case '-':  e3.setNumber( e2.getNumber().subtract(e1.getNumber()) );   //注意是谁减谁
                               break;
                    case '*':  e3.setNumber( e2.getNumber().multiply(e1.getNumber()) );
                               break;
                    case '/':  e3.setNumber( e2.getNumber().divide(e1.getNumber(),scale,RoundingMode.HALF_UP) );   //注意是谁除谁
                               break;
                    case '%':  e3.setNumber( e2.getNumber().remainder(e1.getNumber()) );
                               break;
                }
                stack.push(e3);         //计算结果入栈
            }
        }

        BigDecimal calResult = stack.pop().getNumber();     //栈中的最后一个元素就是计算结果

        return format( calResult );      //返回处理过格式的计算结果
    }