java实现IEEE745字节数组转单精度浮点(解决自动四舍五入问题)

    public static void testIEEE745(){
        int data1=0x42;
        int data2=0xe3;
        int data3=0x22;
        int data4=0x82;
        int data = data1<<24|data2<<16|data3<<8|data4;
        int nSign;
        //获取最高位 1bit S
        if((data&0x80000000)>0){
            nSign = -1;
        }else{
            nSign = 1;
        }
        //获取 8bit  E
        int nExp = data & (0x7f800000);

        nExp = nExp >> 23;
        //获取尾数  23bit M
        float nMantissa = data & (0x7fffff);
        if(nMantissa != 0){
            nMantissa = 1 + nMantissa/8388608;
        }
//        float v = nSign * nMantissa * (2 << (nExp - 128));
        String svalue = String.format("%.10f", nSign * nMantissa * (2 << (nExp - 128)));
//        Double va = new Float(113.567398f).doubleValue();
//        Float va1 = new Float(113.567398f);
        System.out.println(svalue);
    }

 

你可能感兴趣的:(IEEE745)