All Downloads are FREE. Search and download functionalities are using the official Maven repository.

co.easimart.Numbers Maven / Gradle / Ivy

package co.easimart;

/**
 * Static utility methods pertaining to {@link Number} instances.
 */
/** package */ class Numbers {

  /**
   * Add two {@link Number} instances.
   */
  /* package */ static Number add(Number first, Number second) {
    if (first instanceof Double || second instanceof Double) {
      return first.doubleValue() + second.doubleValue();
    } else if (first instanceof Float || second instanceof Float) {
      return first.floatValue() + second.floatValue();
    } else if (first instanceof Long || second instanceof Long) {
      return first.longValue() + second.longValue();
    } else if (first instanceof Integer || second instanceof Integer) {
      return first.intValue() + second.intValue();
    } else if (first instanceof Short || second instanceof Short) {
      return first.shortValue() + second.shortValue();
    } else if (first instanceof Byte || second instanceof Byte) {
      return first.byteValue() + second.byteValue();
    } else {
      throw new RuntimeException("Unknown number type.");
    }
  }

  /**
   * Subtract two {@link Number} instances.
   */
  /* package */ static Number subtract(Number first, Number second) {
    if (first instanceof Double || second instanceof Double) {
      return first.doubleValue() - second.doubleValue();
    } else if (first instanceof Float || second instanceof Float) {
      return first.floatValue() - second.floatValue();
    } else if (first instanceof Long || second instanceof Long) {
      return first.longValue() - second.longValue();
    } else if (first instanceof Integer || second instanceof Integer) {
      return first.intValue() - second.intValue();
    } else if (first instanceof Short || second instanceof Short) {
      return first.shortValue() - second.shortValue();
    } else if (first instanceof Byte || second instanceof Byte) {
      return first.byteValue() - second.byteValue();
    } else {
      throw new RuntimeException("Unknown number type.");
    }
  }

  /**
   * Compare two {@link Number} instances.
   */
  /* package */ static int compare(Number first, Number second) {
    if (first instanceof Double || second instanceof Double) {
      return (int) Math.signum(first.doubleValue() - second.doubleValue());
    } else if (first instanceof Float || second instanceof Float) {
      return (int) Math.signum(first.floatValue() - second.floatValue());
    } else if (first instanceof Long || second instanceof Long) {
      long diff = first.longValue() - second.longValue();
      return (diff < 0) ? -1 : ((diff > 0) ? 1 : 0);
    } else if (first instanceof Integer || second instanceof Integer) {
      return first.intValue() - second.intValue();
    } else if (first instanceof Short || second instanceof Short) {
      return first.shortValue() - second.shortValue();
    } else if (first instanceof Byte || second instanceof Byte) {
      return first.byteValue() - second.byteValue();
    } else {
      throw new RuntimeException("Unknown number type.");
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy