我有以下字符串" 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());
但没有任何帮助。我检查了几个显示正确输出的网站。我无法准确地发现问题。
答案 0 :(得分:3)
我假设您想将其作为字符串打印出来,在某处调用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
我希望它会有所帮助。