Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中二进制分数到十进制的转换 我想把二进制分数转换成十进制。考虑二进制数1101.1110。我知道手动转换的方法,我可以把它转换成程序的形式,但是我不能把小数部分和数字分开。我需要将其分开,因为转换方法在点之后不同_Java_Binary - Fatal编程技术网

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);
双精度值=((双精度)分子)/(1L
public类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;
    }
}