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) 方法注释

posted @ 2021-11-16 20:45  Higurashi-kagome  阅读(324)  评论(0编辑  收藏  举报