java中二进制分数到十进制的转换 我想把二进制分数转换成十进制。考虑二进制数1101.1110。我知道手动转换的方法,我可以把它转换成程序的形式,但是我不能把小数部分和数字分开。我需要将其分开,因为转换方法在点之后不同
将十进制转换为二进制时,小数部分可以通过以下方式分离:java中二进制分数到十进制的转换 我想把二进制分数转换成十进制。考虑二进制数1101.1110。我知道手动转换的方法,我可以把它转换成程序的形式,但是我不能把小数部分和数字分开。我需要将其分开,因为转换方法在点之后不同,java,binary,Java,Binary,将十进制转换为二进制时,小数部分可以通过以下方式分离: double num=12.23; int fraction=num-(long)num; 你能帮我吗 提前感谢。我会将您的输入转换为字符串,获取小数点的索引,将小数点后的所有内容删除为新字符串,将原始字符串截断为小数点前的字符串,将两个字符串解析回您喜欢的整数格式,然后,您可以对每种类型使用不同的方法。我假设您希望得到类型为double的结果。解析不带点的字符串,然后除以2的右幂得到点后的位数 int placesAfterPoint
double num=12.23;
int fraction=num-(long)num;
你能帮我吗
提前感谢。我会将您的输入转换为字符串,获取小数点的索引,将小数点后的所有内容删除为新字符串,将原始字符串截断为小数点前的字符串,将两个字符串解析回您喜欢的整数格式,然后,您可以对每种类型使用不同的方法。我假设您希望得到类型为
double
的结果。解析不带点的字符串,然后除以2的右幂得到点后的位数
int placesAfterPoint = binaryString.length() - binaryString.indexOf(".") - 1;
long numerator = Long.parseLong(binaryString.replace(".", ""), 2);
double value = ((double) numerator) / ( 1L << placesAfterPoint );
int-placesAfterPoint=binaryString.length()-binaryString.indexOf(“.”)1;
长分子=long.parseLong(binaryString.replace(“.”,”),2);
双精度值=((双精度)分子)/(1Lpublic类BinaryToDecimal{
公共静态双ConvertToDecimal(字符串a){
双和;
如果(a)包含(“.”){
字符串[]b=a.split(\\);
intsum1=Integer.parseInt(b[0],2);
双sum2=后三部分(b[1]);
sum=sum1+sum2;
}否则{
sum=Integer.parseInt(a,2);
}
回报金额;
}
公共静态双后置部分(字符串编号){
双和=0;
int length=number.length();
对于(int i=0;i可能是No的重复,实际上根本不是该问题的重复。@DavidWallace“我知道手动转换方法,我可以以程序的形式输入,但我无法将小数部分与数字分开。”->所以他只需要拆分输入。在将小数部分解析回数字时,必须考虑小数的数量级。有很多方法可以做到这一点。
public class BinaryToDecimal {
public static double ConvertToDecimal(String a){
double sum;
if(a.contains(".")){
String[] b=a.split("\\.");
int sum1=Integer.parseInt(b[0],2);
double sum2=latterPart(b[1]);
sum=sum1+sum2;
}else{
sum=Integer.parseInt(a,2);
}
return sum;
}
public static double latterPart(String number){
double sum=0;
int length=number.length();
for(int i=0;i<length;i++){
int e=-i-1;
char mult=number.charAt(i);
int num=Integer.parseInt(String.valueOf(mult));
double num1=num*Math.pow(2, e);
sum=sum+num1;;
}
return sum;
}
}