示例#1
0
  /**
   * 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;
  }