以 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 時,它不能保證準確。
參考:
Java Float.floatToIntBits(float)、Float.floatToRawIntBits(float) 方法註釋