Ini program ketigaku. Well. . Monggo dicoba. . komen ya kalo ada yang salah. .
import java.math.BigInteger;
import java.util.Scanner;
public class praktikum4{
public static void main(String[] argv){
String bilangan1, bilangan2;
System.out.print("Masukkan bilangan pecahan berbasis 8 pertama : ");
bilangan1 = getInput();
System.out.print("Masukkan bilangan pecahan berbasis 8 kedua : ");
bilangan2 = getInput();
String hasil = Double.toString(octalToDecimal(bilangan1)*octalToDecimal(bilangan2));
System.out.println(hasil);
toBinary(hasil);
}
public static void toBinary(String input){
if(input.indexOf("E")==-1){
String bulat = input.substring(0, input.indexOf("."));
String pecahan = input.substring(input.indexOf(".")+1, input.length());
if(Double.parseDouble("0."+pecahan)>0){
System.out.println("Hasil kali bilangan dalam biner adalah:");
System.out.println("Bilangan: "+new BigInteger(bulat.concat(pecahan)).toString(2));
System.out.println("Mantisa: "+Integer.toBinaryString(-1*pecahan.length()));
}else{
System.out.println("Hasil kali dalam biner adalah: "+new BigInteger(bulat).toString(2));
}
}else{
String bulat = input.substring(0, input.indexOf("."));
String pecahan = input.substring(input.indexOf(".")+1, input.indexOf("E"));
Integer mantisa = new Integer(input.substring(input.indexOf("E")+1,input.length()));
System.out.println("Hasil kali bilangan dalam biner adalah:");
System.out.println("Bilangan: "+new BigInteger(bulat.concat(pecahan)).toString(2));
System.out.println("Mantisa: "+Integer.toBinaryString((mantisa-pecahan.length())));
}
}
public static String getInput(){
String input="";
Scanner key = new Scanner(System.in);
boolean valid;
do{
input = key.nextLine();
if(input.matches("([0-7]*\\.[0-7]*)")){
valid = true;
}else{
System.out.print("Input tidak valid, coba masukkan lagi (Ex. 7.0): ");
valid = false;
}
}while(!valid);
return input;
}
public static double octalToDecimal(String input){
double hasil=0;
int power = 0;
for(int i=input.indexOf(".")-1;i>=0;i--){
hasil += (Double.parseDouble(""+input.charAt(i))*Math.pow(8, power));
power++;
}
power = -1;
for(int i=input.indexOf(".")+1;i<input.length();i++){
hasil += (Double.parseDouble(""+input.charAt(i))*Math.pow(8, power));
power--;
}
return hasil;
}
}
Tidak ada komentar:
Posting Komentar