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_VALUE
public 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 zero
java.lang.ArithmeticException
- if the denominator is negativejava.lang.ArithmeticException
- if the numerator is negativejava.lang.ArithmeticException
- if the resulting numerator exceeds
Integer.MAX_VALUE
public 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 zero
public 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 = NaN
java.lang.ArithmeticException
- if the calculated denominator is zero
java.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 null
Fraction
instancejava.lang.NullPointerException
- if the string is null
java.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.Number
public long longValue()
long
. This returns the whole number
part of the fraction.longValue
in class java.lang.Number
public float floatValue()
float
. This calculates the fraction
as the numerator divided by denominator.floatValue
in class java.lang.Number
float
public double doubleValue()
double
. This calculates the fraction
as the numerator divided by denominator.doubleValue
in class java.lang.Number
double
public 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_VALUE
public Fraction add(Fraction fraction)
fraction
- the fraction to add, must not be null
Fraction
instance with the resulting valuesjava.lang.NullPointerException
- if the fraction is null
java.lang.ArithmeticException
- if the resulting numerator or denominator exceeds
Integer.MAX_VALUE
public Fraction subtract(Fraction fraction)
fraction
- the fraction to subtract, must not be null
Fraction
instance with the resulting valuesjava.lang.NullPointerException
- if the fraction is null
java.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 null
Fraction
instance with the resulting valuesjava.lang.NullPointerException
- if the fraction is null
java.lang.ArithmeticException
- if the resulting numerator or denominator exceeds
Integer.MAX_VALUE
public Fraction divideBy(Fraction fraction)
fraction
- the fraction to divide by, must not be null
Fraction
instance with the resulting valuesjava.lang.NullPointerException
- if the fraction is null
java.lang.ArithmeticException
- if the fraction to divide by is zerojava.lang.ArithmeticException
- if the resulting numerator or denominator exceeds
Integer.MAX_VALUE
public 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.Object
obj
- the reference object with which to comparetrue
if this object is equalpublic int hashCode()
hashCode
in class java.lang.Object
public 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.Object
String
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