Class Fraction
- All Implemented Interfaces:
- Serializable,- 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.
- Since:
- 2.0
- See Also:
- 
Field SummaryFieldsModifier and TypeFieldDescriptionstatic final FractionFractionrepresentation of 4/5.static final FractionFractionrepresentation of 1.static final FractionFractionrepresentation of 1/5.static final FractionFractionrepresentation of 1/2.static final FractionFractionrepresentation of 1/4.static final FractionFractionrepresentation of 1/3.static final FractionFractionrepresentation of 3/5.static final FractionFractionrepresentation of 3/4.static final FractionFractionrepresentation of 2/5.static final FractionFractionrepresentation of 2/4.static final FractionFractionrepresentation of 2/3.static final FractionFractionrepresentation of 0.
- 
Method SummaryModifier and TypeMethodDescriptionabs()Gets a fraction that is the positive equivalent of this one.Adds the value of this fraction to another, returning the result in reduced form.intCompares this object to another based on size.Divide the value of this fraction by another.doubleGets the fraction as adouble.booleanCompares this fraction to another object to test if they are equal.floatGets the fraction as afloat.intGets the denominator part of the fraction.static FractiongetFraction(double value) Creates aFractioninstance from adoublevalue.static FractiongetFraction(int numerator, int denominator) Creates aFractioninstance with the 2 parts of a fraction Y/Z.static FractiongetFraction(int whole, int numerator, int denominator) Creates aFractioninstance with the 3 parts of a fraction X Y/Z.static FractiongetFraction(String str) Creates a Fraction from aString.intGets the numerator part of the fraction.intGets the proper numerator, always positive.intGets the proper whole part of the fraction.static FractiongetReducedFraction(int numerator, int denominator) Creates a reducedFractioninstance with the 2 parts of a fraction Y/Z.inthashCode()Gets a hashCode for the fraction.intintValue()Gets the fraction as anint.invert()Gets a fraction that is the inverse (1/fraction) of this one.longGets the fraction as along.multiplyBy(Fraction fraction) Multiplies the value of this fraction by another, returning the result in reduced form.negate()Gets a fraction that is the negative (-fraction) of this one.pow(int power) Gets a fraction that is raised to the passed in power.reduce()Reduce the fraction to the smallest values for the numerator and denominator, returning the result.Subtracts the value of another fraction from the value of this one, returning the result in reduced form.Gets the fraction as a properStringin the format X Y/Z.toString()Gets the fraction as aString.Methods inherited from class java.lang.NumberbyteValue, shortValue
- 
Field Details- 
ZEROFractionrepresentation of 0.
- 
ONEFractionrepresentation of 1.
- 
ONE_HALFFractionrepresentation of 1/2.
- 
ONE_THIRDFractionrepresentation of 1/3.
- 
TWO_THIRDSFractionrepresentation of 2/3.
- 
ONE_QUARTERFractionrepresentation of 1/4.
- 
TWO_QUARTERSFractionrepresentation of 2/4.
- 
THREE_QUARTERSFractionrepresentation of 3/4.
- 
ONE_FIFTHFractionrepresentation of 1/5.
- 
TWO_FIFTHSFractionrepresentation of 2/5.
- 
THREE_FIFTHSFractionrepresentation of 3/5.
- 
FOUR_FIFTHSFractionrepresentation of 4/5.
 
- 
- 
Method Details- 
getFractionCreates aFractioninstance from adoublevalue.This method uses the continued fraction algorithm, computing a maximum of 25 convergents and bounding the denominator by 10,000. - Parameters:
- value- the double value to convert
- Returns:
- a new fraction instance that is close to the value
- Throws:
- ArithmeticException- if- |value| > Integer.MAX_VALUEor- value = NaN
- ArithmeticException- if the calculated denominator is- zero
- ArithmeticException- if the algorithm does not converge
 
- 
getFractionCreates aFractioninstance with the 2 parts of a fraction Y/Z.Any negative signs are resolved to be on the numerator. - Parameters:
- numerator- the numerator, for example the three in 'three sevenths'
- denominator- the denominator, for example the seven in 'three sevenths'
- Returns:
- a new fraction instance
- Throws:
- ArithmeticException- if the denominator is- zeroor the denominator is- negativeand the numerator is- Integer#MIN_VALUE
 
- 
getFractionCreates aFractioninstance with the 3 parts of a fraction X Y/Z.The negative sign must be passed in on the whole number part. - Parameters:
- 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'
- Returns:
- a new fraction instance
- Throws:
- ArithmeticException- if the denominator is- zero
- ArithmeticException- if the denominator is negative
- ArithmeticException- if the numerator is negative
- ArithmeticException- if the resulting numerator exceeds- Integer.MAX_VALUE
 
- 
getFractionCreates a Fraction from aString.The formats accepted are: - doubleString containing a dot
- 'X Y/Z'
- 'Y/Z'
- 'X' (a simple whole number)
 and a . - Parameters:
- str- the string to parse, must not be- null
- Returns:
- the new Fractioninstance
- Throws:
- NullPointerException- if the string is- null
- NumberFormatException- if the number format is invalid
 
- 
getReducedFractionCreates a reducedFractioninstance 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. - Parameters:
- numerator- the numerator, for example the three in 'three sevenths'
- denominator- the denominator, for example the seven in 'three sevenths'
- Returns:
- a new fraction instance, with the numerator and denominator reduced
- Throws:
- ArithmeticException- if the denominator is- zero
 
- 
absGets a fraction that is the positive equivalent of this one.More precisely: (fraction >= 0 ? this : -fraction)The returned fraction is not reduced. - Returns:
- thisif it is positive, or a new positive fraction instance with the opposite signed numerator
 
- 
addAdds the value of this fraction to another, returning the result in reduced form. The algorithm follows Knuth, 4.5.1.- Parameters:
- fraction- the fraction to add, must not be- null
- Returns:
- a Fractioninstance with the resulting values
- Throws:
- NullPointerException- if the fraction is- null
- ArithmeticException- if the resulting numerator or denominator exceeds- Integer.MAX_VALUE
 
- 
compareToCompares this object to another based on size.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. - Specified by:
- compareToin interface- Comparable<Fraction>
- Parameters:
- other- the object to compare to
- Returns:
- -1 if this is less, 0 if equal, +1 if greater
- Throws:
- ClassCastException- if the object is not a- Fraction
- NullPointerException- if the object is- null
 
- 
divideByDivide the value of this fraction by another.- Parameters:
- fraction- the fraction to divide by, must not be- null
- Returns:
- a Fractioninstance with the resulting values
- Throws:
- NullPointerException- if the fraction is- null
- ArithmeticException- if the fraction to divide by is zero
- ArithmeticException- if the resulting numerator or denominator exceeds- Integer.MAX_VALUE
 
- 
doubleValueGets the fraction as adouble. This calculates the fraction as the numerator divided by denominator.- Specified by:
- doubleValuein class- Number
- Returns:
- the fraction as a double
 
- 
equalsCompares this fraction to another object to test if they are equal.To be equal, both values must be equal. Thus 2/4 is not equal to 1/2. 
- 
floatValueGets the fraction as afloat. This calculates the fraction as the numerator divided by denominator.- Specified by:
- floatValuein class- Number
- Returns:
- the fraction as a float
 
- 
getDenominatorGets the denominator part of the fraction.- Returns:
- the denominator fraction part
 
- 
getNumeratorGets the numerator part of the fraction.This method may return a value greater than the denominator, an improper fraction, such as the seven in 7/4. - Returns:
- the numerator fraction part
 
- 
getProperNumeratorGets the proper numerator, always positive.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. - Returns:
- the numerator fraction part of a proper fraction, always positive
 
- 
getProperWholeGets the proper whole part of the fraction.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. - Returns:
- the whole fraction part of a proper fraction, that includes the sign
 
- 
hashCodeGets a hashCode for the fraction.
- 
intValueGets the fraction as anint. This returns the whole number part of the fraction.
- 
invertGets a fraction that is the inverse (1/fraction) of this one.The returned fraction is not reduced. - Returns:
- a new fraction instance with the numerator and denominator inverted.
- Throws:
- ArithmeticException- if the fraction represents zero.
 
- 
longValueGets the fraction as along. This returns the whole number part of the fraction.
- 
multiplyByMultiplies the value of this fraction by another, returning the result in reduced form.- Parameters:
- fraction- the fraction to multiply by, must not be- null
- Returns:
- a Fractioninstance with the resulting values
- Throws:
- NullPointerException- if the fraction is- null
- ArithmeticException- if the resulting numerator or denominator exceeds- Integer.MAX_VALUE
 
- 
negateGets a fraction that is the negative (-fraction) of this one.The returned fraction is not reduced. - Returns:
- a new fraction instance with the opposite signed numerator
 
- 
powGets a fraction that is raised to the passed in power.The returned fraction is in reduced form. - Parameters:
- power- the power to raise the fraction to
- Returns:
- thisif the power is one,- ONEif the power is zero (even if the fraction equals ZERO) or a new fraction instance raised to the appropriate power
- Throws:
- ArithmeticException- if the resulting numerator or denominator exceeds- Integer.MAX_VALUE
 
- 
reduceReduce the fraction to the smallest values for the numerator and denominator, returning the result.For example, if this fraction represents 2/4, then the result will be 1/2. - Returns:
- a new reduced fraction instance, or this if no simplification possible
 
- 
subtractSubtracts the value of another fraction from the value of this one, returning the result in reduced form.- Parameters:
- fraction- the fraction to subtract, must not be- null
- Returns:
- a Fractioninstance with the resulting values
- Throws:
- NullPointerException- if the fraction is- null
- ArithmeticException- if the resulting numerator or denominator cannot be represented in an- int.
 
- 
toProperStringGets the fraction as a properStringin 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. - Returns:
- a Stringform of the fraction
 
- 
toStringGets the fraction as aString.The format used is 'numerator/denominator' always. 
 
-