十进制转float


    /**
     * 十进制转float
     *
     * @param s1
     * @param s2
     * @return
     */
    public static float toFloat(int s1, int s2) {//将输入数值int转化为无符号
        if (s1 == 0 && s2 == 0) {
            return 0;
        }
        //
        int us1 = s1, us2 = s2;
        if (s1 < 0) {
            us1 += 65536;
        }
        if (s2 < 0) {
            us2 += 65536;
        }
        // sign: 符号位, exponent: 阶码, mantissa:尾数
        int sign, exponent;
        float mantissa;//计算符号位
        sign = us1 / 32768;//去掉符号位
        int emCode = us1 % 32768;//计算阶码
        exponent = emCode / 128;//计算尾数
        mantissa = (float) (emCode % 128 * 65536 + us2) / 8388608;//代入公式
        //fValue = (-1) ^ S x 2 ^ (E - 127) x (1 + M)
        float v = (float) Math.pow(-1, sign) * (float) Math.pow(2, exponent - 127) * (1 + mantissa);
//        new DecimalFormat("0.########").format(v);//这行代码可以解决0,0参数返回科学计数法问题
        return v;
    }

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值