JAVA:从64位fpn到十进制的转换

JAVA:从64位fpn到十进制的转换,java,binary,ieee-754,Java,Binary,Ieee 754,我在转换这段java代码时遇到问题…代码最初将32位fpn转换为十进制。我正在尝试将64位fpn转换为十进制。请帮忙 将32位FPN转换为十进制的原始代码 如果您不确定我想做什么,请参考不确定为什么要费事手工完成,因为Java已经有了您想要的所有方法 看起来您的输入是一个字符串,表示二进制的基2 IEEE 754浮点数,32位或64位。巧合的是,这正是Java的float和double分别是什么。因此: public float binaryStringToFloat(final String

我在转换这段java代码时遇到问题…代码最初将32位fpn转换为十进制。我正在尝试将64位fpn转换为十进制。请帮忙

将32位FPN转换为十进制的原始代码


如果您不确定我想做什么,请参考

不确定为什么要费事手工完成,因为Java已经有了您想要的所有方法

看起来您的输入是一个字符串,表示二进制的基2 IEEE 754浮点数,32位或64位。巧合的是,这正是Java的float和double分别是什么。因此:

public float binaryStringToFloat(final String input)
{
    return Float.intBitsToFloat(Integer.parseInt(input, 2));
}

public double binaryStringToDouble(final String input)
{
    return Double.longBitsToDouble(Long.parseLong(input, 2));
}
private void ConvertToDecimal(){
    int pos = 1;
    double doubleBin [] = new double [FPNRep.length()];
    boolean bNegative = false;
    double exp = 0.0;
    double sig = 0.0;

    for(int i = 0; i<=FPNRep.length() - 1; i++){
        if (FPNRep.charAt(i) == '0'){
            doubleBin[i] = 0;}
        else{
            doubleBin[i] = 1;}}

    if (doubleBin[0] == 1){
            bNegative = true;}
    else{
            bNegative = false;}
    for (int i = 1; i <= 11; i++){
        exp += (doubleBin[i] * Math.pow(2, 11 - i));}
        exp = exp - 127;
    for (int i = 12; i <= 63; i++){
        if (doubleBin[i] == 1){
            sig  += (1 / Math.pow(2, pos));}
        pos++;}
        //Add the hidden bit.
        sig = sig + 1;
        if (bNegative == true){
            number = -1 * sig  * Math.pow(2, exp);}
        else{
            number = 1 * sig * Math.pow(2, exp);}
        return;
}
public float binaryStringToFloat(final String input)
{
    return Float.intBitsToFloat(Integer.parseInt(input, 2));
}

public double binaryStringToDouble(final String input)
{
    return Double.longBitsToDouble(Long.parseLong(input, 2));
}