Java Reference
In-Depth Information
public Rational parse(String number) {
return new Rational(Double.parseDouble(number));
}
}
The FractionalFormat class represents the fractional format. The toString() is
straightforward since the internal representation format is already expressed
in terms of numerator and denominator. The parse() method first identifies
numerator and denominator, then uses the standard Double.parseDouble()
method. If the “
” is not found, it means that the format of the number is not
correct, therefore an exception is thrown.
public class FractionalFormat extends Format {
public String getName() { return "fract"; }
String toString(Rational number) {
return Double.toString(number.numerator) !
"/" ! Double.toString(number.denominator);
}
Rational parse(String number) throws FormatException {
int index # number.indexOf('/');
if (index > # 0)
return new Rational(Double.parseDouble(
number.substring(0, index).trim()),
Double.parseDouble(number.substring
(index ! 1).trim()));
else {
throw new FormatException("Error!
Not a rational format");
}
}
}
The FloatingPointFormat class, which represents the floating point format,
is the most complex of the three. The toString() method calculates the
number as a double performing the division between numerator and
denominator, then the simple case of 0 is skipped. The exponent of the
number is the logarithm in base 10 of the number, while the mantissa equals
the number divided by 10 raised to the exponent. The parse() method first
identifies mantissa and exponent by means of the characters “
” and “ ^ ”. If
these characters are not found the format of the number is not correct,
therefore an exception is thrown. Otherwise the value is computed
according to Equation 6.5.
Since the mathematical package only provides the natural logarithm
method we have to use Equation 6.8 to compute the base 10 logarithm:
(
log B
x
log A
x
=
A
log B
Equation 6.8 Equivalence of logarithms
Search WWH ::

Custom Search