Из-за погрешностей точности с плавающей запятой вы обычно должны проверять, чтобы разница была ниже некоторого небольшого значения (но учтите, что 0.5
представляется точно, поэтому это не должно быть проблемой, но в целом это поплавки).
Так что ваш код подходит для вашего конкретного смысла, в общем, вы можете захотеть сделать:
if (abs($number - floor($number) - $decimal) < 0.0001) {
Где $decimal
ваша разница: 0.5
.