繁体   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