Package com.drew.lang
Class Rational
- java.lang.Object
-
- java.lang.Number
-
- com.drew.lang.Rational
-
- All Implemented Interfaces:
Serializable,Comparable<Rational>
public class Rational extends Number implements Comparable<Rational>, Serializable
Immutable class for holding a rational number without loss of precision. Provides a familiar representation viatoString()in formnumerator/denominator. Note that any value with a numerator of zero will be treated as zero, even if the denominator is also zero.- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description Rational(long numerator, long denominator)Creates a new instance of Rational.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description bytebyteValue()Returns the value of the specified number as abyte.intcompareTo(Rational that)Compares twoRationalinstances, returning true if they are mathematically equivalent (in consistence withequals(Object)method).doubledoubleValue()Returns the value of the specified number as adouble.booleanequals(Rational other)Indicates whether this instance andotherare numerically equal, even if their representations differ.booleanequals(Object obj)Compares twoRationalinstances, returning true if they are mathematically equivalent.booleanequalsExact(Rational other)Indicates whether this instance andotherhave identical Numerator and Denominator.floatfloatValue()Returns the value of the specified number as afloat.longgetDenominator()Returns the denominator.longgetNumerator()Returns the numerator.RationalgetReciprocal()Returns the reciprocal value of this object as a new Rational.RationalgetSimplifiedInstance()Simplifies the representation of thisRationalnumber.inthashCode()intintValue()Returns the value of the specified number as anint.booleanisInteger()Checks if thisRationalnumber is an Integer, either positive or negative.booleanisZero()Checks if either the numerator or denominator are zero.longlongValue()Returns the value of the specified number as along.shortshortValue()Returns the value of the specified number as ashort.StringtoSimpleString(boolean allowDecimal)Returns the simplest representation of thisRational's value possible.StringtoString()Returns a string representation of the object of formnumerator/denominator.
-
-
-
Method Detail
-
doubleValue
public double doubleValue()
Returns the value of the specified number as adouble. This may involve rounding.- Specified by:
doubleValuein classNumber- Returns:
- the numeric value represented by this object after conversion
to type
double.
-
floatValue
public float floatValue()
Returns the value of the specified number as afloat. This may involve rounding.- Specified by:
floatValuein classNumber- Returns:
- the numeric value represented by this object after conversion
to type
float.
-
byteValue
public final byte byteValue()
Returns the value of the specified number as abyte. 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 anint. 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 along. 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 ashort. This may involve rounding or truncation. This implementation simply casts the result ofdoubleValue()toshort.- Overrides:
shortValuein classNumber- Returns:
- the numeric value represented by this object after conversion
to type
short.
-
getDenominator
public final long getDenominator()
Returns the denominator.
-
getNumerator
public final long getNumerator()
Returns the numerator.
-
getReciprocal
public Rational getReciprocal()
Returns the reciprocal value of this object as a new Rational.- Returns:
- the reciprocal in a new object
-
isInteger
public boolean isInteger()
Checks if thisRationalnumber is an Integer, either positive or negative.
-
isZero
public boolean isZero()
Checks if either the numerator or denominator are zero.
-
toString
public String toString()
Returns a string representation of the object of formnumerator/denominator.
-
toSimpleString
public String toSimpleString(boolean allowDecimal)
Returns the simplest representation of thisRational's value possible.
-
compareTo
public int compareTo(Rational that)
Compares twoRationalinstances, returning true if they are mathematically equivalent (in consistence withequals(Object)method).- Specified by:
compareToin interfaceComparable<Rational>- Parameters:
that- theRationalto compare this instance to.- Returns:
- the value
0if thisRationalis equal to the argumentRationalmathematically; a value less than0if thisRationalis less than the argumentRational; and a value greater than0if thisRationalis greater than the argumentRational.
-
equals
public boolean equals(Rational other)
Indicates whether this instance andotherare numerically equal, even if their representations differ. For example, 1/2 is equal to 10/20 by this method. Similarly, 1/0 is equal to 100/0 by this method. To test equal representations, use EqualsExact.- Parameters:
other- The rational value to compare with
-
equalsExact
public boolean equalsExact(Rational other)
Indicates whether this instance andotherhave identical Numerator and Denominator.For example, 1/2 is not equal to 10/20 by this method. Similarly, 1/0 is not equal to 100/0 by this method. To test numerically equivalence, use Equals(Rational).
- Parameters:
other- The rational value to compare with
-
equals
public boolean equals(Object obj)
Compares twoRationalinstances, returning true if they are mathematically equivalent.
-
getSimplifiedInstance
public Rational getSimplifiedInstance()
Simplifies the representation of this
Rationalnumber.For example, 5/10 simplifies to 1/2 because both Numerator and Denominator share a common factor of 5.
Uses the Euclidean Algorithm to find the greatest common divisor.
- Returns:
- A simplified instance if one exists, otherwise a copy of the original value.
-
-