Java中的NaN问题

1 java floating-point core nan

我正在将四个字节转换为浮点数,我得到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);
    }
}
Run Code Online (Sandbox Code Playgroud)

Lir*_*una 6

你的主要问题是0xFFFFFFFF确实是NaN.

值为0的浮点数为... 0.

将数组更改为

int[] arry = { 0x00, 0x00, 0x00, 0x00 };
Run Code Online (Sandbox Code Playgroud)

将结果值更改为0.0f浮点数.