负数超出范围的Float.parseFloat返回0.0

sku*_*mar 0 java floating-point

我们如何在Java中检查负数是否超出float变量的范围?

如果我使用Float.parseFloat("1.4E-46"),它返回0.0而不是负无穷大.在正数较大的情况下,它返回无限.

以下代码适用于正数,我看起来类似负数.

    Float f = Float.valueOf(Float.parseFloat(input));

    if (f.floatValue() > Float.MAX_VALUE) {
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

And*_*ira 6

如果我使用Float.parseFloat("1.4E-46"),它返回0.0而不是负无穷大.在正数较大的情况下,它返回无限.

该数字1.4E-46不是负数.这是一个非常小的正数.

相反的1.4E+46-1.4E+46.所以,如果你这样做,Float.valueOf("-1.4E+46")你会得到-Infinity.