簡體   English   中英

Java中的32位十六進制字符串到浮點數

[英]32 bit hex string to floating point number in java

我有以下字符串“ 0x4B196DAF ”。 我想獲得類似“ 10055087.000000 ”的輸出。

我的代碼顯示了一個奇怪的輸出,例如“ 1.0055087E7

long l = Long.parseLong(hexval, 16);
return Float.intBitsToFloat(l.intValue()); 

我也嘗試過

long l = Long.parseLong(hexval, 16);
return Double.longBitsToDouble(l.longValue());

但是沒有幫助。 我檢查了幾個顯示正確輸出的網站。 我無法確切找出問題所在。

我假設您想將其打印為字符串,請在某處調用toString()。 達到限制后,它將給出科學的符號。

您可以嘗試使用:

int hex = 0x4B196DAF;
float f = Float.intBitsToFloat(hex);
System.out.println(f);
System.out.printf("%f", f);

輸出...

1.0055087E7
10055087.00000010055087

或者,如果您願意,可以嘗試使用NumberFormat,它可以讓您設置最小的小數位數:

NumberFormat nf = NumberFormat.getInstance();
nf.setGroupingUsed(false);
nf.setMinimumFractionDigits(6);

System.out.println(nf.format(f));

輸出..

10055087.000000

希望對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM