我正在将四个字节转换为浮点数,结果得到
NaN
,但我想要值 0.0
。我做错了什么?
这是我的代码:
public class abc
{
public static void main(String[] args)
{
int[] arry = { 255, 255, 255, 255 };
int num = ((arry[0] << 24) & 0xFF000000) | ((arry[1] << 16) & 0xFF0000)
| ((arry[2] << 8) & 0xFF00) | (arry[3] & 0xFF);
float f = Float.intBitsToFloat(num);
f= (float) ((f < 0 ? Math.ceil(f * 10) : Math.floor(f * 10)) / 10);
System.out.println(f);
}
}
你的主要问题是
0xFFFFFFFF
确实是一个 NaN。
值为 0 的浮点数是... 0.
将数组更改为
int[] arry = { 0x00, 0x00, 0x00, 0x00 };
将结果值更改为
0.0f
浮点数。
NaN = 不是数字,iaw,位模式 0xFFFFFFFF 不代表 float value 数字。 (约阿希姆,你是对的..再次:-))