Rational

class Rational : Number, Comparable<Rational!>
kotlin.Any
   ↳ kotlin.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.


Requires API level 21 (Android 5.0, Lollipop)

Summary

Public constructors
<init>(numerator: Int, denominator: Int)

Create a Rational with a given numerator and denominator.

Public methods
Double

Returns the value of the specified number as a double.

Boolean

Indicates whether this rational represents a zero value.

Int

Returns a hash code value for the object.

Boolean
equals(other: Any?)

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

String

Return a string representation of this rational, e.

Int

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

Boolean

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

Float

Returns the value of the specified number as a float.

Int

Gets the numerator of the rational.

Int

Gets the denominator of the rational

Short

Returns the value of the specified number as a short.

Long

Returns the value of the specified number as a long.

Boolean

Indicates whether this rational represents an infinite value.

Int

Returns the value of the specified number as a int.

Boolean

Indicates whether this rational represents a finite value.

static Rational!

Parses the specified string as a rational value.

Properties
static Rational!

Constant for the negative infinity value of the Rational type.

static Rational!

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

static Rational!

Constant for the positive infinity value of the Rational type.

static Rational!

Constant for the zero value of the Rational type.

Public constructors

<init>

Rational(numerator: Int, denominator: Int)

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 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 Int: the numerator of the rational
denominator Int: the denominator of the rational

See Also

Public methods

toDouble

added in API level 21
fun toDouble(): Double

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.


Requires API level 21 (Android 5.0, Lollipop)
Return
Double: the divided value of the numerator and denominator as a double.

isZero

added in API level 21
fun isZero(): Boolean

Indicates whether this rational represents a zero value.

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


Requires API level 21 (Android 5.0, Lollipop)
Return
Boolean: true if this rational is finite zero value; false otherwise

hashCode

added in API level 21
fun hashCode(): Int

Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by java.util.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 in equals 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 the hashCode 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 java.lang.Object#equals(java.lang.Object) method, then calling the hashCode 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.)
Requires API level 21 (Android 5.0, Lollipop)

Return
Int: a hash code value for this object.

equals

added in API level 21
fun equals(other: Any?): Boolean

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 

Requires API level 21 (Android 5.0, Lollipop)
Parameters
obj Any?: a reference to another object
Return
Boolean: A boolean that determines whether or not the two Rational objects are equal.

toString

added in API level 21
fun toString(): String

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.


Requires API level 21 (Android 5.0, Lollipop)
Return
String: a string representation of the object.

compareTo

added in API level 21
fun compareTo(other: Rational!): Int

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.

Requires API level 21 (Android 5.0, Lollipop)
Parameters
o Rational!: the object to be compared.
another Rational!: the rational to be compared
Return
Int: a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified rational.
Exceptions
NullPointerException if another was null
ClassCastException if the specified object's type prevents it from being compared to this object.

isNaN

added in API level 21
fun isNaN(): Boolean

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

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


Requires API level 21 (Android 5.0, Lollipop)
Return
Boolean: true if this rational is a Not-a-Number (NaN) value; false if this is a (potentially infinite) number value

toFloat

added in API level 21
fun toFloat(): Float

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.


Requires API level 21 (Android 5.0, Lollipop)
Return
Float: the divided value of the numerator and denominator as a float.

getNumerator

added in API level 21
fun getNumerator(): Int

Gets the numerator of the rational.

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


Requires API level 21 (Android 5.0, Lollipop)

getDenominator

added in API level 21
fun getDenominator(): Int

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.
Requires API level 21 (Android 5.0, Lollipop)

toShort

added in API level 21
fun toShort(): Short

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.


Requires API level 21 (Android 5.0, Lollipop)
Return
Short: the divided value of the numerator and denominator as a short.

toLong

added in API level 21
fun toLong(): Long

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.


Requires API level 21 (Android 5.0, Lollipop)
Return
Long: the divided value of the numerator and denominator as a long.

isInfinite

added in API level 21
fun isInfinite(): Boolean

Indicates whether this rational represents an infinite value.

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


Requires API level 21 (Android 5.0, Lollipop)
Return
Boolean: true if this rational is a (positive or negative) infinite value; false if this is a finite number value (or NaN)

toInt

added in API level 21
fun toInt(): Int

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.


Requires API level 21 (Android 5.0, Lollipop)
Return
Int: the divided value of the numerator and denominator as a int.

isFinite

added in API level 21
fun isFinite(): Boolean

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.


Requires API level 21 (Android 5.0, Lollipop)
Return
Boolean: true if this rational is a (positive or negative) infinite value; false if this is a finite number value (or NaN)

parseRational

added in API level 21
static fun parseRational(string: String!): Rational!

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 

Requires API level 21 (Android 5.0, Lollipop)
Parameters
string String!: the string representation of a rational value.
Return
Rational!: the rational value represented by string.
Exceptions
NumberFormatException if string cannot be parsed as a rational value.
NullPointerException if string was null

Properties

NEGATIVE_INFINITY

added in API level 21
static val NEGATIVE_INFINITY: Rational!

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.


Requires API level 21 (Android 5.0, Lollipop)

NaN

added in API level 21
static val NaN: Rational!

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.


Requires API level 21 (Android 5.0, Lollipop)

POSITIVE_INFINITY

added in API level 21
static val POSITIVE_INFINITY: Rational!

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.


Requires API level 21 (Android 5.0, Lollipop)

ZERO

added in API level 21
static val ZERO: Rational!

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.


Requires API level 21 (Android 5.0, Lollipop)