This version is precise to the second and nothing will be "slightly off".
function currentAge($birthdate) {
$age = floor((time()-strtotime($birthdate))/31536000);
return $age;
}
But the real question is this: You say that you want to determine whether the age is an integer. I assume by that, you mean that you want to know if today is their birthday? Of course, if I was born on November 7 and today is November 7 but it's 11:30 AM, then comparing the date is going to make me 11.5 hours off. So my age would be precisely 38 but because of the 11.5 hour discrepency, your function would determine that I am not precisely 38 years old so today must not be my birthday. Likewise, if today is the day before my birthday at 11:00 pm, then I am not quite 38 years old yet but your function would put me "close enough".
In my opinion, instead of checking to see if the age is an integer and rounding it... I would compare todays day / month against the day and month of the person's actual birthdate like this:
if (date("j/n")==date("j/n",strtotime($birthdate))) { print "today is their birthday"; }
And besides, what have you got against the Unix timestamp?!?!