Android APIs
public final class

Rational

extends Number
implements Comparable<Rational>
java.lang.Object
   ↳ java.lang.Number
     ↳ android.util.Rational

Class Overview

An immutable data type representation a rational number.

Contains a pair of ints representing the numerator and denominator of a Rational number.

Summary

Fields
public static final Rational NEGATIVE_INFINITY Constant for the negative infinity value of the Rational type.
public static final Rational NaN Constant for the Not-a-Number (NaN) value of the Rational type.
public static final Rational POSITIVE_INFINITY Constant for the positive infinity value of the Rational type.
public static final Rational ZERO Constant for the zero value of the Rational type.
Public Constructors
Rational(int numerator, int denominator)

Create a Rational with a given numerator and denominator.

Public Methods
int compareTo(Rational another)
Compare this rational to the specified rational to determine their natural order.
double doubleValue()
Returns the value of the specified number as a double.
boolean equals(Object obj)

Compare this Rational to another object and see if they are equal.

float floatValue()
Returns the value of the specified number as a float.
int getDenominator()
Gets the denominator of the rational

The denominator may return 0, in which case the rational may represent positive infinity (if the numerator was positive), negative infinity (if the numerator was negative), or NaN (if the numerator was 0).

int getNumerator()
Gets the numerator of the rational.
int hashCode()
Returns an integer hash code for this object.
int intValue()
Returns the value of the specified number as a int.
boolean isFinite()
Indicates whether this rational represents a finite value.
boolean isInfinite()
Indicates whether this rational represents an infinite value.
boolean isNaN()
Indicates whether this rational is a Not-a-Number (NaN) value.
boolean isZero()
Indicates whether this rational represents a zero value.
long longValue()
Returns the value of the specified number as a long.
static Rational parseRational(String string)
Parses the specified string as a rational value.
short shortValue()
Returns the value of the specified number as a short.
String toString()
Return a string representation of this rational, e.g.
[Expand]
Inherited Methods
From class java.lang.Number
From class java.lang.Object
From interface java.lang.Comparable

Fields

public static final Rational NEGATIVE_INFINITY

Added in API level 21

Constant for the negative infinity value of the Rational type.

Equivalent to constructing a new rational with a negative numerator and a denominator equal to 0.

public static final Rational NaN

Added in API level 21

Constant for the Not-a-Number (NaN) value of the Rational type.

A NaN value is considered to be equal to itself (that is NaN.equals(NaN) will return true; it is always greater than any non-NaN value (that is NaN.compareTo(notNaN) will return a number greater than 0).

Equivalent to constructing a new rational with both the numerator and denominator equal to 0.

public static final Rational POSITIVE_INFINITY

Added in API level 21

Constant for the positive infinity value of the Rational type.

Equivalent to constructing a new rational with a positive numerator and a denominator equal to 0.

public static final Rational ZERO

Added in API level 21

Constant for the zero value of the Rational type.

Equivalent to constructing a new rational with a numerator equal to 0 and any non-zero denominator.

Public Constructors

public Rational (int numerator, int denominator)

Added in API level 21

Create a Rational with a given numerator and denominator.

The signs of the numerator and the denominator may be flipped such that the denominator is always positive. Both the numerator and denominator will be converted to their reduced forms (see equals(Object) for more details).

For example,

  • a rational of 2/4 will be reduced to 1/2.
  • a rational of 1/-1 will be flipped to -1/1
  • a rational of 5/0 will be reduced to 1/0
  • a rational of 0/5 will be reduced to 0/1

Parameters
numerator the numerator of the rational
denominator the denominator of the rational
See Also

Public Methods

public int compareTo (Rational another)

Added in API level 21

Compare this rational to the specified rational to determine their natural order.

NaN is considered to be equal to itself and greater than all other Rational values. Otherwise, if the objects are not equal, then the following rules apply:

  • Positive infinity is greater than any other finite number (or negative infinity)
  • Negative infinity is less than any other finite number (or positive infinity)
  • The finite number represented by this rational is checked numerically against the other finite number by converting both rationals to a common denominator multiple and comparing their numerators.

Parameters
another the rational to be compared
Returns
  • a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified rational.
Throws
NullPointerException if another was null

public double doubleValue ()

Added in API level 21

Returns the value of the specified number as a double.

The double is calculated by converting both the numerator and denominator to a double; then returning the result of dividing the numerator by the denominator.

Returns
  • the divided value of the numerator and denominator as a double.

public boolean equals (Object obj)

Added in API level 21

Compare this Rational to another object and see if they are equal.

A Rational object can only be equal to another Rational object (comparing against any other type will return false).

A Rational object is considered equal to another Rational object if and only if one of the following holds:

  • Both are NaN
  • Both are infinities of the same sign
  • Both have the same numerator and denominator in their reduced form

A reduced form of a Rational is calculated by dividing both the numerator and the denominator by their greatest common divisor.

(new Rational(1, 2)).equals(new Rational(1, 2)) == true   // trivially true
 (new Rational(2, 3)).equals(new Rational(1, 2)) == false  // trivially false
 (new Rational(1, 2)).equals(new Rational(2, 4)) == true   // true after reduction
 (new Rational(0, 0)).equals(new Rational(0, 0)) == true   // NaN.equals(NaN)
 (new Rational(1, 0)).equals(new Rational(5, 0)) == true   // both are +infinity
 (new Rational(1, 0)).equals(new Rational(-1, 0)) == false // +infinity != -infinity
 

Parameters
obj a reference to another object
Returns
  • A boolean that determines whether or not the two Rational objects are equal.

public float floatValue ()

Added in API level 21

Returns the value of the specified number as a float.

The float is calculated by converting both the numerator and denominator to a float; then returning the result of dividing the numerator by the denominator.

Returns
  • the divided value of the numerator and denominator as a float.

public int getDenominator ()

Added in API level 21

Gets the denominator of the rational

The denominator may return 0, in which case the rational may represent positive infinity (if the numerator was positive), negative infinity (if the numerator was negative), or NaN (if the numerator was 0).

The denominator will always return 1 if the numerator is 0.

public int getNumerator ()

Added in API level 21

Gets the numerator of the rational.

The numerator will always return 1 if this rational represents infinity (that is, the denominator is 0).

public int hashCode ()

Added in API level 21

Returns an integer hash code for this object. By contract, any two objects for which equals(Object) returns true must return the same hash code value. This means that subclasses of Object usually override both methods or neither method.

Note that hash values must not change over time unless information used in equals comparisons also changes.

See Writing a correct hashCode method if you intend implementing your own hashCode method.

Returns
  • this object's hash code.

public int intValue ()

Added in API level 21

Returns the value of the specified number as a int.

Finite rationals are converted to an int value by dividing the numerator by the denominator; conversion for non-finite values happens identically to casting a floating point value to an int, in particular:

  • Positive infinity saturates to the largest maximum integer MAX_VALUE
  • Negative infinity saturates to the smallest maximum integer MIN_VALUE
  • Not-A-Number (NaN) returns 0.

Returns
  • the divided value of the numerator and denominator as a int.

public boolean isFinite ()

Added in API level 21

Indicates whether this rational represents a finite value.

A finite value occurs when the denominator is not 0; in other words the rational is neither infinity or NaN.

Returns
  • true if this rational is a (positive or negative) infinite value; false if this is a finite number value (or NaN)

public boolean isInfinite ()

Added in API level 21

Indicates whether this rational represents an infinite value.

An infinite value occurs when the denominator is 0 (but the numerator is not).

Returns
  • true if this rational is a (positive or negative) infinite value; false if this is a finite number value (or NaN)

public boolean isNaN ()

Added in API level 21

Indicates whether this rational is a Not-a-Number (NaN) value.

A NaN value occurs when both the numerator and the denominator are 0.

Returns
  • true if this rational is a Not-a-Number (NaN) value; false if this is a (potentially infinite) number value

public boolean isZero ()

Added in API level 21

Indicates whether this rational represents a zero value.

A zero value is a finite rational with a numerator of 0.

Returns
  • true if this rational is finite zero value; false otherwise

public long longValue ()

Added in API level 21

Returns the value of the specified number as a long.

Finite rationals are converted to an long value by dividing the numerator by the denominator; conversion for non-finite values happens identically to casting a floating point value to a long, in particular:

  • Positive infinity saturates to the largest maximum long MAX_VALUE
  • Negative infinity saturates to the smallest maximum long MIN_VALUE
  • Not-A-Number (NaN) returns 0.

Returns
  • the divided value of the numerator and denominator as a long.

public static Rational parseRational (String string)

Added in API level 21

Parses the specified string as a rational value.

The ASCII characters \u003a (':') and \u002f ('/') are recognized as separators between the numerator and denumerator.

For any Rational r: Rational.parseRational(r.toString()).equals(r). However, the method also handles rational numbers expressed in the following forms:

"num/den" or "num:den" => new Rational(num, den);, where num and den are string integers potentially containing a sign, such as "-10", "+7" or "5".

Rational.parseRational("3:+6").equals(new Rational(1, 2)) == true
 Rational.parseRational("-3/-6").equals(new Rational(1, 2)) == true
 Rational.parseRational("4.56") => throws NumberFormatException
 

Parameters
string the string representation of a rational value.
Returns
  • the rational value represented by string.
Throws
NumberFormatException if string cannot be parsed as a rational value.
NullPointerException if string was null

public short shortValue ()

Added in API level 21

Returns the value of the specified number as a short.

Finite rationals are converted to a short value identically to intValue(); the int result is then truncated to a short before returning the value.

Returns
  • the divided value of the numerator and denominator as a short.

public String toString ()

Added in API level 21

Return a string representation of this rational, e.g. "1/2".

The following rules of conversion apply:

  • NaN values will return "NaN"
  • Positive infinity values will return "Infinity"
  • Negative infinity values will return "-Infinity"
  • All other values will return "numerator/denominator" where numerator and denominator are substituted with the appropriate numerator and denominator values.

Returns
  • a printable representation of this object.