/**
* 十进制转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;
}