если вы говорите значения с плавающей запятой, вы должны быть очень осторожны из-за характера формата.
лучший из известных мне способов сделать это - выбрать какое-нибудь значение эпсилона, скажем, 0,000001f, а затем сделать что-то вроде этого:
boolean nearZero(float f)
{
return ((-episilon < f) && (f <epsilon));
}
затем
if(nearZero(z-(int)z))
{
//do stuff
}
по сути, вы проверяете, имеют ли z и целочисленный регистр z одинаковую величину в некотором допуске.Это необходимо, потому что плавающие неточны по своей природе.
ПРИМЕЧАНИЕ, ОДНАКО: это, вероятно, сломается, если ваши поплавки имеют величину больше Integer.MAX_VALUE
(2147483647), и вы должны знать, что по необходимости проверить это невозможнодля целочисленности с плавающей точкой выше этого значения.