![](/img/trans.png)
[英]How can I convert an IEEE-754 binary representation String to a float or double in Java?
[英]How to extract the IEEE 754 float representation in JAVA
我正在兩個整數變量中獲取IEEE754格式的浮點值。 整數是13107和17184。需要交換整數。 現在,我如何從這兩個整數中提取浮點值? 這些整數的浮點值將等於160.19(大約)。 我的代碼僅提供1.1的結果。
int buffer = 0;
int float_value = 0;
float result = 0;
float value = 0, mantissa = 0;
if (swap == FALSE) {
float_value = rec_buf;
float_value = float_value << 16;
buffer = rec_buf1;
float_value = (float_value | buffer);
}else{
buffer = rec_buf1;
float_value = rec_buf;
float_value = float_value << 16;
float_value = (float_value | buffer);
}
String a = Integer.toBinaryString((int)float_value);
value = Float.valueOf(a);
任何人都可以幫我解決這個問題
這是一個澄清問題的測試程序。 我建議在代碼中使用類似的打印輸出,以檢查正在發生的事情,直到工作為止。
public class Test {
public static void main(String[] args) {
System.out.println(Integer.toHexString(Float.floatToIntBits(160.19f)));
int a = 13107;
System.out.println(Integer.toHexString(a));
int b = 17184;
System.out.println(Integer.toHexString(b));
int bits = b << 16 | a;
System.out.println(Integer.toHexString(bits));
System.out.println(Float.intBitsToFloat(bits));
}
}
輸出:
432030a4
3333
4320
43203333
160.2
前三行輸出是為了確保輸入值正確,並且我知道該如何放置它們。 從一開始,我就知道近似值的位模式。 查看這些內容以及輸入的十六進制位模式,向我展示了它們需要走的方向。 第四行顯示生成的位模式。 最后,我使用了Louis Wasserman的答案中已經建議的Float.intBitsToFloat來獲取浮點數。
如果您具有int
float
的32位IEEE-754表示形式,則可以使用Float.intBitsToFloat
轉換回float
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.