return Math.round(argumentList.e.evalNumber(vn));
return Math.floor(argumentList.e.evalNumber(vn))+0.5d;
	public double evalNumber(VTDNav vn){	    int ac = 0;	  switch(opCode){			case FuncName.LAST:  if (argCount()!=0 )									throw new IllegalArgumentException									("floor()'s argument count is invalid");								 return contextSize;						case FuncName.POSITION:   if (argCount()!=0 )									throw new IllegalArgumentException									("position()'s argument count is invalid");								 return position;			case FuncName.COUNT: 	return count(vn);			case FuncName.NUMBER:   if (argCount()!=1)										throw new IllegalArgumentException										("number()'s argument count is invalid");									return argumentList.e.evalNumber(vn);												case FuncName.SUM:	    return sum(vn);			case FuncName.FLOOR: 	if (argCount()!=1 )			    						throw new IllegalArgumentException("floor()'s argument count is invalid");			    					return Math.floor(argumentList.e.evalNumber(vn));			    								case FuncName.CEILING:	if (argCount()!=1 )			    						throw new IllegalArgumentException("ceiling()'s argument count is invalid");			    					return Math.ceil(argumentList.e.evalNumber(vn));			    								case FuncName.STRING_LENGTH:			    					ac = argCount();			    					if (ac == 0){			    					    try{			    					        if (vn.atTerminal == true){			    					            int type = vn.getTokenType(vn.LN);			    					            if (type == VTDNav.TOKEN_ATTR_NAME 			    					                || type == VTDNav.TOKEN_ATTR_NS){			    					                return vn.toString(vn.LN+1).length();			    					            } else {			    					                return vn.toString(vn.LN).length();			    					            }			    					        }else {			    					            int i = vn.getText();			    					            if (i==-1)			    					                return 0;			    					            else 			    					                return vn.toString(i).length();			    					        }			    					    }catch (NavException e){			    					        return 0;			    					    }			    					} else if (ac == 1){			    					    return argumentList.e.evalString(vn).length();			    					} else {			    					    throw new IllegalArgumentException("string-length()'s argument count is invalid");			    					}			    			case FuncName.ROUND: 	if (argCount()!=1 )			    						throw new IllegalArgumentException("round()'s argument count is invalid");			    					return Math.round(argumentList.e.evalNumber(vn));						default: if (isBoolean){			    		if (evalBoolean(vn))			    		    return 1;			    		else			    		    return 0;					 }else {					    return Double.parseDouble(evalString(vn)); 					        					 }	  }	}