class DezimalUmwandeln{//Applikationsklasse //Methode mit Wert Gleitpunktzahl: static Gleitpunktzahl Dezimal(double x,byte N,int t){ //Umwandlung einer positiven Dezimalzahl x>N in eine //Gleitpunktzahl mit Basis N, Mantissenlaenge t byte[] m=new byte[t];//durch Nullen vorbesetzt!! double x1=x; int e=0; do{//solange wird durch N dividiert bis x1<N e++; x1/=N;}//Ende do-Block while(x1>N);// Jetzt: e=Exponent von x x/=Math.pow(N,e); byte d=(byte) Math.floor(x); //erste Ziffer m[0] x-=d; int j=0; do{//nur positive Ziffern von m werden neu besetzt m[j]=d;//stets >0! int i=0; do{//solange wird mit N multipliziert bis x>N i++; x*=N;}//Ende innerer do-Block while(x<1); d=(byte) Math.floor(x); x-=d; j+=i;}//Ende aeusserer do-Block while(j<t);//jetzt steht die Mantisse m fest Gleitpunktzahl y=new Gleitpunktzahl(m,N,t,e); return y; }//Ende Dezimal() static void main(String[] args){ byte N=2; int t=24; double z=2.1; Gleitpunktzahl x=Dezimal(z,N,t); String s="1."; for(int i=1;i<t;i++) s+=x.m[i]; System.out.println(s+" 2^"+x.e); //1.00001100110011001100110 2^1 }//Ende main }//Ende class