Checking if a number is an Integer in Java

后端 未结 11 543
生来不讨喜
生来不讨喜 2020-12-09 15:48

Is there any method or quick way to check whether a number is an Integer (belongs to Z field) in Java?

I thought of maybe subtracting it from the rounded number, but

11条回答
  •  失恋的感觉
    2020-12-09 16:19

    if you're talking floating point values, you have to be very careful due to the nature of the format.

    the best way that i know of doing this is deciding on some epsilon value, say, 0.000001f, and then doing something like this:

    boolean nearZero(float f)
    {
        return ((-episilon < f) && (f 

    then

    if(nearZero(z-(int)z))
    { 
        //do stuff
    }
    

    essentially you're checking to see if z and the integer case of z have the same magnitude within some tolerance. This is necessary because floating are inherently imprecise.

    NOTE, HOWEVER: this will probably break if your floats have magnitude greater than Integer.MAX_VALUE (2147483647), and you should be aware that it is by necessity impossible to check for integral-ness on floats above that value.

提交回复
热议问题