public final class Fraction extends Number implements 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(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(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.
|
String |
toProperString()
Gets the fraction as a proper
String in the format X Y/Z. |
String |
toString()
Gets the fraction as a
String. |
byteValue, shortValuepublic 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 convertArithmeticException - if |value| > Integer.MAX_VALUE or value = NaNArithmeticException - if the calculated denominator is zeroArithmeticException - if the algorithm does not convergepublic 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'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'ArithmeticException - if the denominator is zeroArithmeticException - if the denominator is negativeArithmeticException - if the numerator is negativeArithmeticException - if the resulting numerator exceeds Integer.MAX_VALUEpublic static Fraction getFraction(String str)
String.
The formats accepted are:
double String containing a dotand a .
str - the string to parse, must not be nullFraction instanceNullPointerException - if the string is nullNumberFormatException - if the number format is invalidpublic 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'ArithmeticException - if the denominator is zeropublic 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 add(Fraction fraction)
fraction - the fraction to add, must not be nullFraction instance with the resulting valuesNullPointerException - if the fraction is nullArithmeticException - if the resulting numerator or denominator exceeds
Integer.MAX_VALUEpublic 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.
compareTo in interface Comparable<Fraction>other - the object to compare toClassCastException - if the object is not a FractionNullPointerException - if the object is nullpublic Fraction divideBy(Fraction fraction)
fraction - the fraction to divide by, must not be nullFraction instance with the resulting valuesNullPointerException - if the fraction is nullArithmeticException - if the fraction to divide by is zeroArithmeticException - if the resulting numerator or denominator exceeds
Integer.MAX_VALUEpublic double doubleValue()
double. This calculates the fraction
as the numerator divided by denominator.doubleValue in class Numberdoublepublic boolean equals(Object obj)
To be equal, both values must be equal. Thus 2/4 is not equal to 1/2.
public float floatValue()
float. This calculates the fraction
as the numerator divided by denominator.floatValue in class Numberfloatpublic int getDenominator()
public int getNumerator()
This method may return a value greater than the denominator, an improper fraction, such as the seven in 7/4.
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 hashCode()
public int intValue()
int. This returns the whole number
part of the fraction.public Fraction invert()
The returned fraction is not reduced.
ArithmeticException - if the fraction represents zero.public long longValue()
long. This returns the whole number
part of the fraction.public Fraction multiplyBy(Fraction fraction)
fraction - the fraction to multiply by, must not be nullFraction instance with the resulting valuesNullPointerException - if the fraction is nullArithmeticException - if the resulting numerator or denominator exceeds
Integer.MAX_VALUEpublic Fraction negate()
The returned fraction is not reduced.
public 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 powerArithmeticException - if the resulting numerator or denominator exceeds Integer.MAX_VALUEpublic Fraction reduce()
For example, if this fraction represents 2/4, then the result will be 1/2.
public Fraction subtract(Fraction fraction)
fraction - the fraction to subtract, must not be nullFraction instance with the resulting valuesNullPointerException - if the fraction is nullArithmeticException - if the resulting numerator or denominator
cannot be represented in an int.public 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 © 2001–2025 The Apache Software Foundation. All rights reserved.