|
|||||||||
| Home >> All >> com >> drew >> [ lang overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
com.drew.lang
Class Rational

java.lang.Objectjava.lang.Number
com.drew.lang.Rational
- All Implemented Interfaces:
- java.io.Serializable
- public class Rational
- extends java.lang.Number
- implements java.io.Serializable
- extends java.lang.Number
Immutable class for holding a rational number without loss of precision. Provides
a familiar representation via toString() in form numerator/denominator.
| Field Summary | |
private int |
denominator
Holds the denominator. |
private int |
maxSimplificationCalculations
|
private int |
numerator
Holds the numerator. |
| Fields inherited from class java.lang.Number |
|
| 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(java.lang.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. |
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. |
private boolean |
tooComplexForSimplification()
Decides whether a brute-force simplification calculation should be avoided by comparing the maximum number of possible calculations with some threshold. |
java.lang.String |
toSimpleString(boolean allowDecimal)
Returns the simplest represenation of this Rational's value possible. |
java.lang.String |
toString()
Returns a string representation of the object of form numerator/denominator. |
| Methods inherited from class java.lang.Object |
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
numerator
private final int numerator
- Holds the numerator.
denominator
private final int denominator
- Holds the denominator.
maxSimplificationCalculations
private int maxSimplificationCalculations
| Constructor Detail |
Rational
public Rational(int numerator,
int denominator)
- Creates a new instance of Rational. Rational objects are immutable, so
once you've set your numerator and denominator values here, you're stuck
with them!
| Method Detail |
doubleValue
public double doubleValue()
- Returns the value of the specified number as a
double. This may involve rounding.
floatValue
public float floatValue()
- Returns the value of the specified number as a
float. This may involve rounding.
byteValue
public final byte byteValue()
- Returns the value of the specified number as a
byte. This may involve rounding or truncation. This implementation simply casts the result ofdoubleValue()tobyte.
intValue
public final int intValue()
- Returns the value of the specified number as an
int. This may involve rounding or truncation. This implementation simply casts the result ofdoubleValue()toint.
longValue
public final long longValue()
- Returns the value of the specified number as a
long. This may involve rounding or truncation. This implementation simply casts the result ofdoubleValue()tolong.
shortValue
public final short shortValue()
- Returns the value of the specified number as a
short. This may involve rounding or truncation. This implementation simply casts the result ofdoubleValue()toshort.
getDenominator
public final int getDenominator()
- Returns the denominator.
getNumerator
public final int getNumerator()
- Returns the numerator.
getReciprocal
public Rational getReciprocal()
- Returns the reciprocal value of this obejct as a new Rational.
isInteger
public boolean isInteger()
- Checks if this rational number is an Integer, either positive or negative.
toString
public java.lang.String toString()
- Returns a string representation of the object of form
numerator/denominator.
toSimpleString
public java.lang.String toSimpleString(boolean allowDecimal)
- Returns the simplest represenation of this Rational's value possible.
tooComplexForSimplification
private boolean tooComplexForSimplification()
- Decides whether a brute-force simplification calculation should be avoided
by comparing the maximum number of possible calculations with some threshold.
equals
public boolean equals(java.lang.Object obj)
- Compares two
Rationalinstances, returning true if they are mathematically equivalent.
getSimplifiedInstance
public 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. 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
|
|||||||||
| Home >> All >> com >> drew >> [ lang overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
JAVADOC