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 int
s representing the numerator and denominator of a Rational number.
Summary
Public constructors | |
---|---|
Create a |
Public methods | |
---|---|
Int |
Compare this rational to the specified rational to determine their natural order. |
Boolean |
Compare this Rational to another object and see if they are equal. |
Int |
Gets the denominator of the rational |
Int |
Gets the numerator of the rational. |
Int |
hashCode() Returns a hash code value for the object. |
Boolean |
isFinite() Indicates whether this rational represents a finite value. |
Boolean |
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. |
static Rational! |
parseRational(string: String!) Parses the specified string as a rational value. |
Double |
toDouble() Returns the value of the specified number as a |
Float |
toFloat() Returns the value of the specified number as a |
Int |
toInt() Returns the value of the specified number as a |
Long |
toLong() Returns the value of the specified number as a |
Short |
toShort() Returns the value of the specified number as a |
String |
toString() Return a string representation of this rational, e. |
Properties | |
---|---|
static Rational! |
Constant for the negative infinity value of the |
static Rational! |
Constant for the Not-a-Number (NaN) value of the |
static Rational! |
Constant for the positive infinity value of the |
static Rational! |
Constant for the zero value of the |
Public constructors
Rational
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 to1/2
. - a rational of
1/-1
will be flipped to-1/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
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.
Parameters | |
---|---|
o |
the object to be compared. |
another |
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 | |
---|---|
java.lang.NullPointerException |
if another was null |
java.lang.ClassCastException |
if the specified object's type prevents it from being compared to this object. |
equals
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.
<code>(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 </code>
Parameters | |
---|---|
obj |
a reference to another object This value may be null . |
Return | |
---|---|
Boolean |
A boolean that determines whether or not the two Rational objects are equal. |
getDenominator
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
.
getNumerator
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
).
hashCode
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 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
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
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.
Return | |
---|---|
Int |
a hash code value for this object. |
isFinite
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
.
Return | |
---|---|
Boolean |
true if this rational is a (positive or negative) infinite value; false if this is a finite number value (or NaN ) |
isInfinite
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).
Return | |
---|---|
Boolean |
true if this rational is a (positive or negative) infinite value; false if this is a finite number value (or NaN ) |
isNaN
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
.
Return | |
---|---|
Boolean |
true if this rational is a Not-a-Number (NaN) value; false if this is a (potentially infinite) number value |
isZero
fun isZero(): Boolean
Indicates whether this rational represents a zero value.
A zero value is a finite
rational with a numerator of 0
.
Return | |
---|---|
Boolean |
true if this rational is finite zero value; false otherwise |
parseRational
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".
<code>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 </code>
Parameters | |
---|---|
string |
String!: the string representation of a rational value. |
Return | |
---|---|
Rational! |
the rational value represented by string . |
Exceptions | |
---|---|
java.lang.NumberFormatException |
if string cannot be parsed as a rational value. |
java.lang.NullPointerException |
if string was null |
toDouble
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.
Return | |
---|---|
Double |
the divided value of the numerator and denominator as a double . |
toFloat
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.
Return | |
---|---|
Float |
the divided value of the numerator and denominator as a float . |
toInt
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
.
Return | |
---|---|
Int |
the divided value of the numerator and denominator as a int . |
toLong
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
.
Return | |
---|---|
Long |
the divided value of the numerator and denominator as a long . |
toShort
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.
Return | |
---|---|
Short |
the divided value of the numerator and denominator as a short . |
toString
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"
wherenumerator
anddenominator
are substituted with the appropriate numerator and denominator values.
Return | |
---|---|
String |
a string representation of the object. |
Properties
NEGATIVE_INFINITY
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
.
NaN
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
.
POSITIVE_INFINITY
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
.
ZERO
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.