com.drew.lang
public class Rational extends Number implements Serializable
numerator/denominator
.
Constructor Summary | |
---|---|
Rational(int numerator, int denominator)
Creates a new instance of Rational. |
Method Summary | |
---|---|
byte | byteValue()
Returns the value of the specified number as a byte .
|
double | doubleValue()
Returns the value of the specified number as a double .
|
boolean | equals(Object obj)
Compares two Rational instances, returning true if they are mathematically
equivalent. |
float | floatValue()
Returns the value of the specified number as a float .
|
int | getDenominator()
Returns the denominator. |
int | getNumerator()
Returns the numerator. |
Rational | getReciprocal()
Returns the reciprocal value of this obejct as a new Rational. |
Rational | getSimplifiedInstance() Simplifies the Rational number. Prime number series: 1, 2, 3, 5, 7, 9, 11, 13, 17 To reduce a rational, need to see if both numerator and denominator are divisible by a common factor. |
int | intValue()
Returns the value of the specified number as an int .
|
boolean | isInteger()
Checks if this rational number is an Integer, either positive or negative. |
long | longValue()
Returns the value of the specified number as a long .
|
short | shortValue()
Returns the value of the specified number as a short .
|
String | toSimpleString(boolean allowDecimal)
Returns the simplest represenation of this Rational's value possible. |
String | toString()
Returns a string representation of the object of form numerator/denominator . |
byte
.
This may involve rounding or truncation. This implementation simply
casts the result of doubleValue()
to byte
.
Returns: the numeric value represented by this object after conversion
to type byte
.
double
.
This may involve rounding.
Returns: the numeric value represented by this object after conversion
to type double
.
Rational
instances, returning true if they are mathematically
equivalent.Parameters: obj the Rational to compare this instance to.
Returns: true if instances are mathematically equivalent, otherwise false. Will also
return false if obj
is not an instance of Rational
.
float
.
This may involve rounding.
Returns: the numeric value represented by this object after conversion
to type float
.
Returns: the reciprocal in a new object
Simplifies the Rational number.
Prime number series: 1, 2, 3, 5, 7, 9, 11, 13, 17
To reduce a rational, need to see if both numerator and denominator are divisible by a common factor. Using the prime number series in ascending order guarantees the minimun number of checks required.
However, generating the prime number series seems to be a hefty task. Perhaps it's simpler to check if both d & n are divisible by all numbers from 2 -> (Math.min(denominator, numerator) / 2). In doing this, one can check for 2 and 5 once, then ignore all even numbers, and all numbers ending in 0 or 5. This leaves four numbers from every ten to check.
Therefore, the max number of pairs of modulus divisions required will be:
4 Math.min(denominator, numerator) - 1
-- * ------------------------------------ + 2
10 2
Math.min(denominator, numerator) - 1
= ------------------------------------ + 2
5
Returns: a simplified instance, or if the Rational could not be simpliffied, returns itself (unchanged)
int
.
This may involve rounding or truncation. This implementation simply
casts the result of doubleValue()
to int
.
Returns: the numeric value represented by this object after conversion
to type int
.
long
.
This may involve rounding or truncation. This implementation simply
casts the result of doubleValue()
to long
.
Returns: the numeric value represented by this object after conversion
to type long
.
short
.
This may involve rounding or truncation. This implementation simply
casts the result of doubleValue()
to short
.
Returns: the numeric value represented by this object after conversion
to type short
.
numerator/denominator
.Returns: a string representation of the object.