public final class Fraction extends java.lang.Number implements java.lang.Comparable<Fraction>
Fraction is a Number implementation that
stores fractions accurately.
This class is immutable, and interoperable with most methods that accept
a Number.
Note that this class is intended for common use cases, it is int based and thus suffers from various overflow issues. For a BigInteger based equivalent, please see the Commons Math BigFraction class.
| Modifier and Type | Field and Description |
|---|---|
static Fraction |
FOUR_FIFTHS
Fraction representation of 4/5. |
static Fraction |
ONE
Fraction representation of 1. |
static Fraction |
ONE_FIFTH
Fraction representation of 1/5. |
static Fraction |
ONE_HALF
Fraction representation of 1/2. |
static Fraction |
ONE_QUARTER
Fraction representation of 1/4. |
static Fraction |
ONE_THIRD
Fraction representation of 1/3. |
static Fraction |
THREE_FIFTHS
Fraction representation of 3/5. |
static Fraction |
THREE_QUARTERS
Fraction representation of 3/4. |
static Fraction |
TWO_FIFTHS
Fraction representation of 2/5. |
static Fraction |
TWO_QUARTERS
Fraction representation of 2/4. |
static Fraction |
TWO_THIRDS
Fraction representation of 2/3. |
static Fraction |
ZERO
Fraction representation of 0. |
| Modifier and Type | Method and Description |
|---|---|
Fraction |
abs()
Gets a fraction that is the positive equivalent of this one.
|
Fraction |
add(Fraction fraction)
Adds the value of this fraction to another, returning the result in reduced form.
|
int |
compareTo(Fraction other)
Compares this object to another based on size.
|
Fraction |
divideBy(Fraction fraction)
Divide the value of this fraction by another.
|
double |
doubleValue()
Gets the fraction as a
double. |
boolean |
equals(java.lang.Object obj)
Compares this fraction to another object to test if they are equal..
|
float |
floatValue()
Gets the fraction as a
float. |
int |
getDenominator()
Gets the denominator part of the fraction.
|
static Fraction |
getFraction(double value)
Creates a
Fraction instance from a double value. |
static Fraction |
getFraction(int numerator,
int denominator)
Creates a
Fraction instance with the 2 parts
of a fraction Y/Z. |
static Fraction |
getFraction(int whole,
int numerator,
int denominator)
Creates a
Fraction instance with the 3 parts
of a fraction X Y/Z. |
static Fraction |
getFraction(java.lang.String str)
Creates a Fraction from a
String. |
int |
getNumerator()
Gets the numerator part of the fraction.
|
int |
getProperNumerator()
Gets the proper numerator, always positive.
|
int |
getProperWhole()
Gets the proper whole part of the fraction.
|
static Fraction |
getReducedFraction(int numerator,
int denominator)
Creates a reduced
Fraction instance with the 2 parts
of a fraction Y/Z. |
int |
hashCode()
Gets a hashCode for the fraction.
|
int |
intValue()
Gets the fraction as an
int. |
Fraction |
invert()
Gets a fraction that is the inverse (1/fraction) of this one.
|
long |
longValue()
Gets the fraction as a
long. |
Fraction |
multiplyBy(Fraction fraction)
Multiplies the value of this fraction by another, returning the
result in reduced form.
|
Fraction |
negate()
Gets a fraction that is the negative (-fraction) of this one.
|
Fraction |
pow(int power)
Gets a fraction that is raised to the passed in power.
|
Fraction |
reduce()
Reduce the fraction to the smallest values for the numerator and
denominator, returning the result.
|
Fraction |
subtract(Fraction fraction)
Subtracts the value of another fraction from the value of this one,
returning the result in reduced form.
|
java.lang.String |
toProperString()
Gets the fraction as a proper
String in the format X Y/Z. |
java.lang.String |
toString()
Gets the fraction as a
String. |
public static Fraction getFraction(int numerator, int denominator)
Fraction instance with the 2 parts
of a fraction Y/Z.
Any negative signs are resolved to be on the numerator.
numerator - the numerator, for example the three in 'three sevenths'denominator - the denominator, for example the seven in 'three sevenths'java.lang.ArithmeticException - if the denominator is zero
or the denominator is negative and the numerator is Integer#MIN_VALUEpublic static Fraction getFraction(int whole, int numerator, int denominator)
Fraction instance with the 3 parts
of a fraction X Y/Z.
The negative sign must be passed in on the whole number part.
whole - the whole number, for example the one in 'one and three sevenths'numerator - the numerator, for example the three in 'one and three sevenths'denominator - the denominator, for example the seven in 'one and three sevenths'java.lang.ArithmeticException - if the denominator is zerojava.lang.ArithmeticException - if the denominator is negativejava.lang.ArithmeticException - if the numerator is negativejava.lang.ArithmeticException - if the resulting numerator exceeds
Integer.MAX_VALUEpublic static Fraction getReducedFraction(int numerator, int denominator)
Fraction instance with the 2 parts
of a fraction Y/Z.
For example, if the input parameters represent 2/4, then the created fraction will be 1/2.
Any negative signs are resolved to be on the numerator.
numerator - the numerator, for example the three in 'three sevenths'denominator - the denominator, for example the seven in 'three sevenths'java.lang.ArithmeticException - if the denominator is zeropublic static Fraction getFraction(double value)
Fraction instance from a double value.
This method uses the continued fraction algorithm, computing a maximum of 25 convergents and bounding the denominator by 10,000.
value - the double value to convertjava.lang.ArithmeticException - if |value| > Integer.MAX_VALUE
or value = NaNjava.lang.ArithmeticException - if the calculated denominator is zerojava.lang.ArithmeticException - if the algorithm does not convergepublic static Fraction getFraction(java.lang.String str)
String.
The formats accepted are:
double String containing a dotand a .
str - the string to parse, must not be nullFraction instancejava.lang.NullPointerException - if the string is nulljava.lang.NumberFormatException - if the number format is invalidpublic int getNumerator()
This method may return a value greater than the denominator, an improper fraction, such as the seven in 7/4.
public int getDenominator()
public int getProperNumerator()
An improper fraction 7/4 can be resolved into a proper one, 1 3/4. This method returns the 3 from the proper fraction.
If the fraction is negative such as -7/4, it can be resolved into -1 3/4, so this method returns the positive proper numerator, 3.
public int getProperWhole()
An improper fraction 7/4 can be resolved into a proper one, 1 3/4. This method returns the 1 from the proper fraction.
If the fraction is negative such as -7/4, it can be resolved into -1 3/4, so this method returns the positive whole part -1.
public int intValue()
int. This returns the whole number
part of the fraction.intValue in class java.lang.Numberpublic long longValue()
long. This returns the whole number
part of the fraction.longValue in class java.lang.Numberpublic float floatValue()
float. This calculates the fraction
as the numerator divided by denominator.floatValue in class java.lang.Numberfloatpublic double doubleValue()
double. This calculates the fraction
as the numerator divided by denominator.doubleValue in class java.lang.Numberdoublepublic Fraction reduce()
For example, if this fraction represents 2/4, then the result will be 1/2.
public Fraction invert()
The returned fraction is not reduced.
java.lang.ArithmeticException - if the fraction represents zero.public Fraction negate()
The returned fraction is not reduced.
public Fraction abs()
More precisely: (fraction >= 0 ? this : -fraction)
The returned fraction is not reduced.
this if it is positive, or a new positive fraction
instance with the opposite signed numeratorpublic Fraction pow(int power)
The returned fraction is in reduced form.
power - the power to raise the fraction tothis if the power is one, ONE if the power
is zero (even if the fraction equals ZERO) or a new fraction instance
raised to the appropriate powerjava.lang.ArithmeticException - if the resulting numerator or denominator exceeds
Integer.MAX_VALUEpublic Fraction add(Fraction fraction)
fraction - the fraction to add, must not be nullFraction instance with the resulting valuesjava.lang.NullPointerException - if the fraction is nulljava.lang.ArithmeticException - if the resulting numerator or denominator exceeds
Integer.MAX_VALUEpublic Fraction subtract(Fraction fraction)
fraction - the fraction to subtract, must not be nullFraction instance with the resulting valuesjava.lang.NullPointerException - if the fraction is nulljava.lang.ArithmeticException - if the resulting numerator or denominator
cannot be represented in an int.public Fraction multiplyBy(Fraction fraction)
fraction - the fraction to multiply by, must not be nullFraction instance with the resulting valuesjava.lang.NullPointerException - if the fraction is nulljava.lang.ArithmeticException - if the resulting numerator or denominator exceeds
Integer.MAX_VALUEpublic Fraction divideBy(Fraction fraction)
fraction - the fraction to divide by, must not be nullFraction instance with the resulting valuesjava.lang.NullPointerException - if the fraction is nulljava.lang.ArithmeticException - if the fraction to divide by is zerojava.lang.ArithmeticException - if the resulting numerator or denominator exceeds
Integer.MAX_VALUEpublic boolean equals(java.lang.Object obj)
To be equal, both values must be equal. Thus 2/4 is not equal to 1/2.
equals in class java.lang.Objectobj - the reference object with which to comparetrue if this object is equalpublic int hashCode()
hashCode in class java.lang.Objectpublic int compareTo(Fraction other)
Note: this class has a natural ordering that is inconsistent with equals, because, for example, equals treats 1/2 and 2/4 as different, whereas compareTo treats them as equal.
public java.lang.String toString()
String.
The format used is 'numerator/denominator' always.
toString in class java.lang.ObjectString form of the fractionpublic java.lang.String toProperString()
String in the format X Y/Z.
The format used in 'wholeNumber numerator/denominator'. If the whole number is zero it will be omitted. If the numerator is zero, only the whole number is returned.
String form of the fractionCopyright © 2010 - 2023 Adobe. All Rights Reserved