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){
Search WWH ::




Custom Search