<?xml version="1.0"?> | |
<!-- | |
Copyright 2005 The Apache Software Foundation | |
Licensed under the Apache License, Version 2.0 (the "License"); | |
you may not use this file except in compliance with the License. | |
You may obtain a copy of the License at | |
http://www.apache.org/licenses/LICENSE-2.0 | |
Unless required by applicable law or agreed to in writing, software | |
distributed under the License is distributed on an "AS IS" BASIS, | |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
See the License for the specific language governing permissions and | |
limitations under the License. | |
--> | |
<?xml-stylesheet type="text/xsl" href="./xdoc.xsl"?> | |
<!-- $Revision$ $Date$ --> | |
<document url="stat.html"> | |
<properties> | |
<title>The Commons Math User Guide - Fractions</title> | |
</properties> | |
<body> | |
<section name="9 Fractions"> | |
<subsection name="9.1 Overview" href="overview"> | |
<p> | |
The fraction packages provides a fraction number type as well as | |
fraction number formatting. | |
</p> | |
</subsection> | |
<subsection name="9.2 Fraction Numbers" href="fraction"> | |
<p> | |
<a href="../apidocs/org/apache/commons/math/fraction/Fraction.html"> | |
org.apache.commons.math.fraction.Fraction</a> provides a fraction number | |
type that forms the basis for the fraction functionality found in | |
commons-math. | |
</p> | |
<p> | |
To create a fraction number, simply call the constructor passing in two | |
integer arguments, the first being the numerator of the fraction and the second being the denominator: | |
<source>Fraction f = new Fraction(1, 3); // 1 / 3</source> | |
</p> | |
<p> | |
Of special note with fraction construction, when a fraction is created it is always reduced to lowest terms. | |
</p> | |
<p> | |
The <code>Fraction</code> class provides many unary and binary | |
fraction operations. These operations provide the means to add, | |
subtract, multiple and, divide fractions along with other functions similar to the real number functions found in | |
<code>java.math.BigDecimal</code>: | |
<source>Fraction lhs = new Fraction(1, 3); | |
Fraction rhs = new Fraction(2, 5); | |
Fraction answer = lhs.add(rhs); // add two fractions | |
answer = lhs.subtract(rhs); // subtract two fractions | |
answer = lhs.abs(); // absolute value | |
answer = lhs.reciprocal(); // reciprocal of lhs</source> | |
</p> | |
<p> | |
Like fraction construction, for each of the fraction functions, the resulting fraction is reduced to lowest terms. | |
</p> | |
</subsection> | |
<subsection name="9.3 Fraction Formatting and Parsing" href="formatting"> | |
<p> | |
<code>Fraction</code> instances can be converted to and from strings | |
using the<a href="../apidocs/org/apache/commons/math/fraction/FractionFormat.html"> | |
org.apache.commons.math.fraction.FractionFormat</a> class. | |
<code>FractionFormat</code> is a <code>java.text.Format</code> | |
extension and, as such, is used like other formatting objects (e.g. | |
<code>java.text.SimpleDateFormat</code>): | |
<source>FractionFormat format = new FractionFormat(); // default format | |
Fraction f = new Fraction(2, 4); | |
String s = format.format(f); // s contains "1 / 2", note the reduced fraction</source> | |
</p> | |
<p> | |
To customize the formatting output, one or two | |
<code>java.text.NumberFormat</code> instances can be used to construct | |
a <code>FractionFormat</code>. These number formats control the | |
formatting of the numerator and denominator of the fraction: | |
<source>NumberFormat nf = NumberFormat.getInstance(Locale.FRANCE); | |
// create fraction format with custom number format | |
// when one number format is used, both numerator and | |
// denominator are formatted the same | |
FractionFormat format = new FractionFormat(nf); | |
Fraction f = new Fraction(2000, 3333); | |
String s = format.format(c); // s contains "2.000 / 3.333" | |
NumberFormat nf2 = NumberFormat.getInstance(Locale.US); | |
// create fraction format with custom number formats | |
format = new FractionFormat(nf, nf2); | |
s = format.format(f); // s contains "2.000 / 3,333"</source> | |
</p> | |
<p> | |
Formatting's inverse operation, parsing, can also be performed by | |
<code>FractionFormat</code>. To parse a fraction from a string, | |
simply call the <code>parse</code> method: | |
<source>FractionFormat ff = new FractionFormat(); | |
Fraction f = ff.parse("-10 / 21");</source> | |
</p> | |
</subsection> | |
</section> | |
</body> | |
</document> |