Ввод «111» выдает 7.0, как требуется, но «111.111» выдает «7.0». Что не так с дробной частью этого? Здесь «len» относится к длине строки. IDE не выдает никаких предупреждений или ошибок. Где логика ошибочна?
Приложение: Я знаю, что метод parseint
также работает нормально. Но просто хотел написать свою собственную функцию:
Редактировать: Скопировал с небольшой опечаткой .. исправлено.
Программа драйвера:
public static void main(String args[]){
bClass instantiate = new bClass();String b="";
Scanner In = new Scanner(System.in);
System.out.println("Enter binary value");
b = In.nextLine();
System.out.println(instantiate.BinaryToDecimal(b,b.length()));
System.out.println("Thank You");
}
Функция:
double BinaryToDecimal(String bin,int len){
String temp = bin; String fpart=""; String intpart=""; String Binary="";
double BinaryI = 0; double BinaryF=0;
int p= 0; char[] binary = bin.toCharArray();
for(p=0;p<len;p++){
if(binary[p]=='.'){
break;
}
}
int base=1;
for(int i = p-1;i>=0;i--){
BinaryI+=(binary[i]-'0') * base;
base*=2;
}
base=2;
for(int i=p+1;i<len;i++){
BinaryF+=(binary[i]-'0') / base;
base*= 2;
}
}