Rational
  public
  
  final
  
  class
  Rational
  
  
  
  
    extends Number
  
  
  
  
  
      implements
      
        Comparable<Rational>
      
  
  
| java.lang.Object | ||
| ↳ | java.lang.Number | |
| ↳ | android.util.Rational | |
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_INFINITYConstant for the negative infinity value of the  | 
| 
    public
    static
    final
    Rational | NaNConstant for the Not-a-Number (NaN) value of the  | 
| 
    public
    static
    final
    Rational | POSITIVE_INFINITYConstant for the positive infinity value of the  | 
| 
    public
    static
    final
    Rational | ZEROConstant for the zero value of the  | 
| Public constructors | |
|---|---|
| 
      Rational(int numerator, int denominator)
      Create a  | |
| 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  | 
| 
        
        
        
        
        
        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  | 
| 
        
        
        
        
        
        int | 
      getDenominator()
      Gets the denominator of the rational The denominator may return  | 
| 
        
        
        
        
        
        int | 
      getNumerator()
      Gets the numerator of the rational. | 
| 
        
        
        
        
        
        int | 
      hashCode()
      Returns a hash code value for the object. | 
| 
        
        
        
        
        
        int | 
      intValue()
      Returns the value of the specified number as a  | 
| 
        
        
        
        
        
        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  | 
| 
        
        
        static
        
        
        Rational | 
      parseRational(String string)
      Parses the specified string as a rational value. | 
| 
        
        
        
        
        
        short | 
      shortValue()
      Returns the value of the specified number as a  | 
| 
        
        
        
        
        
        String | 
      toString()
      Return a string representation of this rational, e.g.  | 
| Inherited methods | |
|---|---|
Fields
NEGATIVE_INFINITY
public static final Rational NEGATIVE_INFINITY
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.
NaN
public static final Rational NaN
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.
POSITIVE_INFINITY
public static final Rational POSITIVE_INFINITY
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.
ZERO
public static final Rational ZERO
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
Rational
public Rational (int numerator, 
                int denominator)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/4will be reduced to1/2.
- a rational of 1/-1will be flipped to-1/1
- a rational of 5/0will be reduced to1/0
- a rational of 0/5will be reduced to0/1
| Parameters | |
|---|---|
| numerator | int: the numerator of the rational | 
| denominator | int: the denominator of the rational | 
See also:
Public methods
compareTo
public int compareTo (Rational another)
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 | Rational: the rational to be compared | 
| Returns | |
|---|---|
| int | 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 anotherwasnull | 
doubleValue
public double doubleValue ()
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 | |
|---|---|
| double | the divided value of the numerator and denominator as a double. | 
equals
public boolean equals (Object obj)
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 | Object: a reference to another object
 This value may benull. | 
| Returns | |
|---|---|
| boolean | A boolean that determines whether or not the two Rational objects are equal. | 
floatValue
public float floatValue ()
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 | |
|---|---|
| float | the divided value of the numerator and denominator as a float. | 
getDenominator
public 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).
The denominator will always return 1 if the numerator is 0.
| Returns | |
|---|---|
| int | |
getNumerator
public int getNumerator ()
Gets the numerator of the rational.
The numerator will always return 1 if this rational represents
 infinity (that is, the denominator is 0).
| Returns | |
|---|---|
| int | |
hashCode
public int hashCode ()
Returns a hash code value for the object. This method is
 supported for the benefit of hash tables such as those provided by
 HashMap.
 
 The general contract of hashCode is:
 
- Whenever it is invoked on the same object more than once during
     an execution of a Java application, the hashCodemethod must consistently return the same integer, provided no information used inequalscomparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
- If two objects are equal according to the equalsmethod, then calling thehashCodemethod on each of the two objects must produce the same integer result.
- It is not required that if two objects are unequal
     according to the equalsmethod, then calling thehashCodemethod on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
| Returns | |
|---|---|
| int | a hash code value for this object. | 
intValue
public int intValue ()
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
 Integer.MAX_VALUE
- Negative infinity saturates to the smallest maximum integer
 Integer.MIN_VALUE
- Not-A-Number (NaN) returns 0.
| Returns | |
|---|---|
| int | the divided value of the numerator and denominator as a int. | 
isFinite
public boolean isFinite ()
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 | |
|---|---|
| boolean | trueif this rational is a (positive or negative) infinite value;falseif this is a finite number value (orNaN) | 
isInfinite
public boolean isInfinite ()
Indicates whether this rational represents an infinite value.
An infinite value occurs when the denominator is 0 (but the numerator is not).
| Returns | |
|---|---|
| boolean | trueif this rational is a (positive or negative) infinite value;falseif this is a finite number value (orNaN) | 
isNaN
public boolean isNaN ()
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 | |
|---|---|
| boolean | trueif this rational is a Not-a-Number (NaN) value;falseif this is a (potentially infinite) number value | 
isZero
public boolean isZero ()
Indicates whether this rational represents a zero value.
A zero value is a finite rational with a numerator of 0.
| Returns | |
|---|---|
| boolean | trueif this rational is finite zero value;falseotherwise | 
longValue
public long longValue ()
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
 Long.MAX_VALUE
- Negative infinity saturates to the smallest maximum long
 Long.MIN_VALUE
- Not-A-Number (NaN) returns 0.
| Returns | |
|---|---|
| long | the divided value of the numerator and denominator as a long. | 
parseRational
public static Rational parseRational (String string)
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 | String: the string representation of a rational value. | 
| Returns | |
|---|---|
| Rational | the rational value represented by string. | 
| Throws | |
|---|---|
| NumberFormatException | if stringcannot be parsed
 as a rational value. | 
| NullPointerException | if stringwasnull | 
shortValue
public short shortValue ()
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 | |
|---|---|
| short | the divided value of the numerator and denominator as a short. | 
toString
public String toString ()
Return a string representation of this rational, e.g. "1/2".
 
The following rules of conversion apply:
- NaNvalues will return- "NaN"
- Positive infinity values will return "Infinity"
- Negative infinity values will return "-Infinity"
- All other values will return "numerator/denominator"wherenumeratoranddenominatorare substituted with the appropriate numerator and denominator values.
| Returns | |
|---|---|
| String | a string representation of the object. | 
