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) 方法註釋

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章