[英]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.