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