code: public static double toDoubleValue(Object o) throws PageException {
  	if (o instanceof Number) {
  	    return ((Number) o).doubleValue();
  	}
  	else if (o instanceof Boolean) return ((Boolean) o).booleanValue() ? 1 : 0;
  	else if (o instanceof CharSequence) return toDoubleValue(o.toString(), true);
  	// else if(o instanceof Clob) return toDoubleValue(toString(o));
  	else if (o instanceof Castable) return ((Castable) o).castToDoubleValue();
  	else if (o == null) return 0;// toDoubleValue("");
  	else if (o instanceof ObjectWrap) return toDoubleValue(((ObjectWrap) o).getEmbededObject());
  	else if (o instanceof Date) return DateTimeUtil.getInstance().toDoubleValue(((Date) o).getTime());
  	else if (o instanceof Calendar) return DateTimeUtil.getInstance().toDoubleValue(((Calendar) o).getTimeInMillis());
  	else if (o instanceof Character) return (double) (((Character) o).charValue());
  	throw new CasterException(o, "number");
      }
docs: cast a Object to a double value (primitive value Type)
  
  @param o Object to cast
  @return casted double value
  @throws PageException