/** * Evaluates and returns the value of the expression as a double number. * * @return The calculated value of the expression as a double number. If the type of the value * does not implement the Number interface (e.g. Complex), NaN is returned. If an error occurs * during evaluation, NaN is returned and hasError() will return true. * @see #getComplexValue() */ public double getValue() { Object value = getValueAsObject(); if (value == null) return Double.NaN; if (value instanceof Complex) { Complex c = (Complex) value; if (c.im() != 0.0) return Double.NaN; return c.re(); } if (value != null && value instanceof Number) { return ((Number) value).doubleValue(); } return Double.NaN; }