Java 浮点数转为对应位模式的整数
以 float 为例:
public class Test {
public static int test1(float f){
byte[] bytes = new byte[4];
ByteBuffer.wrap(bytes).putFloat(f);
int i = ByteBuffer.wrap(bytes).getInt();
return i;
}
public static int test2(float f){
return Float.floatToRawIntBits(f);
}
public static void main(String[] args) {
System.out.println(Test.test1(1.0f));
System.out.println(Test.test2(1.0f));
}
}
1065353216
1065353216
不能使用 Float.floatToIntBits(float) 转换,因为当传入的 float 值为 NaN 时,它不能保证准确。
参考:
NaN 的二进制形式
Java Float.floatToIntBits(float)、Float.floatToRawIntBits(float) 方法注释