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 int
s 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 
public
static
final
Rational 
NaN
Constant for the NotaNumber (NaN) value of the 
public
static
final
Rational 
POSITIVE_INFINITY
Constant for the positive infinity value of the 
public
static
final
Rational 
ZERO
Constant 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 NotaNumber (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 NotaNumber (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 nonNaN
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 nonzero 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/4
will be reduced to1/2
.  a rational of
1/1
will be flipped to1/1
 a rational of
5/0
will be reduced to1/0
 a rational of
0/5
will 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 another was null

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 
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
hashCode
method must consistently return the same integer, provided no information used inequals
comparisons 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
equals(Object)
method, then calling thehashCode
method 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
equals(java.lang.Object)
method, then calling thehashCode
method 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.
As much as is reasonably practical, the hashCode method defined by
class Object
does return distinct integers for distinct
objects. (This is typically implemented by converting the internal
address of the object into an integer, but this implementation
technique is not required by the
Java™ programming language.)
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 nonfinite 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
 NotANumber (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 
true if this rational is a (positive or negative) infinite value;
false if this is a finite number value (or NaN )

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 
true if this rational is a (positive or negative) infinite value;
false if this is a finite number value (or NaN )

isNaN
public boolean isNaN ()
Indicates whether this rational is a NotaNumber (NaN) value.
A NaN
value occurs when both the numerator and the denominator are 0
.
Returns  

boolean 
true if this rational is a NotaNumber (NaN) value;
false if 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 
true if this rational is finite zero value;
false otherwise

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 nonfinite 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
 NotANumber (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 string cannot be parsed
as a rational value. 
NullPointerException 
if string was null

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:
NaN
values will return"NaN"
 Positive infinity values will return
"Infinity"
 Negative infinity values will return
"Infinity"
 All other values will return
"numerator/denominator"
wherenumerator
anddenominator
are substituted with the appropriate numerator and denominator values.
Returns  

String 
a string representation of the object. 
Interfaces
Classes
 ArrayMap
 ArraySet
 AtomicFile
 Base64
 Base64InputStream
 Base64OutputStream
 Config
 DebugUtils
 DisplayMetrics
 EventLog
 EventLog.Event
 EventLogTags
 EventLogTags.Description
 FloatMath
 FloatProperty
 Half
 IntProperty
 JsonReader
 JsonWriter
 LayoutDirection
 Log
 LogPrinter
 LongSparseArray
 LruCache
 MonthDisplayHelper
 MutableBoolean
 MutableByte
 MutableChar
 MutableDouble
 MutableFloat
 MutableInt
 MutableLong
 MutableShort
 Pair
 Patterns
 PrintStreamPrinter
 PrintWriterPrinter
 Property
 Range
 Rational
 Size
 SizeF
 SparseArray
 SparseBooleanArray
 SparseIntArray
 SparseLongArray
 StateSet
 StatsLog
 StringBuilderPrinter
 TimeUtils
 TimingLogger
 TypedValue
 Xml
Enums
Exceptions