package prevodCisla;
public class prevodCisla {
public static double[] rozdeleniCisla(final double cislo){
int celaCast = (int)cislo;
double zbytek = cislo - celaCast;
double[] rozdeleneCislo = new double[2];
rozdeleneCislo[1] = 0;
rozdeleneCislo[0] = celaCast;
rozdeleneCislo[1] = zbytek;
return rozdeleneCislo;
}
public static String prevodCisla(final double cislo, final int soustava){
if(soustava<2 || soustava>36) {
throw new IllegalArgumentException("Neplatna soustava"+soustava);
}
String vysledek = "";
double cisloPoRozdeleni[] = rozdeleniCisla(cislo);
if(cisloPoRozdeleni[1] == 0){
//cele cislo
while(cisloPoRozdeleni[0] != 0){
(int)double zbytekPoDeleni = cisloPoRozdeleni[0] % soustava;
cisloPoRozdeleni[0] = cisloPoRozdeleni[0]/soustava;
vysledek = vysledek+zbytekPoDeleni;
}
}
else{
//desetinne cislo
String vysledek1="";
String vysledek2="";
while(cisloPoRozdeleni[0] != 0){
//prevod cele casti
double zbytekPoDeleni = cisloPoRozdeleni[0] % soustava;
cisloPoRozdeleni[0] = cisloPoRozdeleni[0]/soustava;
vysledek1 = vysledek+zbytekPoDeleni;
}
//prevod desetinne casti
for (int i = 0; i < 10; i++) {
while(cisloPoRozdeleni[1] != 0){
double meziVysledek = cisloPoRozdeleni[1]*2;
double rozdelenyMeziVysledek[] = rozdeleniCisla(meziVysledek);
vysledek2 = vysledek2+rozdelenyMeziVysledek[0];
cisloPoRozdeleni[1] = rozdelenyMeziVysledek[1];
}
}
vysledek = vysledek1+"."+vysledek2;
}
return vysledek;
}
public static void main(String[] args) {
String vysledek;
vysledek = prevodCisla(10,2);
System.out.println("Vysledek="+vysledek);
}
}
Mohl by mi někdo jen tak zběžně říci, jestli mám ten skript správně, jde mi hlavně o tu část, kde se převádí desetinné číslo, protože tam si nejsem úplně jistý správností algoritmu?
Díky moc za odpověď