Java Reference
In-Depth Information
public abstract class
Base {
private
String name;
private int
base;
private
String digits;
static final int
MAX_PRECISION
#
10;
// max number of decimal ciphers
double
EPSILON; // smallest representable number
Base(String name,
int
base, String digits){
this
.name
#
name;
this
.base
#
base;
this
.digits
#
digits;
EPSILON
#
Math.pow(base,-MAX_PRECISION);
}
public
String getName() {
return
name; }
public int
getBase() {
return
base; }
double
parse(String number) {
// decodes the sign
double
sign
#
1.0;
if
(number.charAt(0)
##
'-'){
sign
#
-1.0;
number
#
number.substring(1).trim();
}
else if
(number.charAt(0)
##
'
!
'){
sign
#
1.0;
number
#
number.substring(1).trim();
}
// parses the integer part and the decimal part
int
power;
int
index
#
number.indexOf('.');
if
(index >
#
0)
power
#
index-1;
else
power
#
number.length()-1;
double
result
#
0.0;
double
mult
#
Math.pow(base,power);
// decodes the integer part
for
(
int
i
#
0; i < number.length(); i
!!
)
if
(number.charAt(i)!
#
'.'){
result
!#
mult * digits.indexOf(number.charAt(i));
mult /
#
base;
}
return
result * sign;
}
String toString(
double
number) {
if
(number
##
0.0)
return
"0";
StringBuffer result
#
new
StringBuffer();
if
(number<0){