Согласно руководству по PHP, float sqrt ( float $arg )
, sqrt () всегда возвращает число с плавающей запятой. Использование функции is_int () не решит проблему, поскольку она проверяет тип данных и возвращает ошибку.
Чтобы обойти это, вы можете проверить это, используя вместо этого модуль: (должен быть fmod () для модуля с плавающей запятой, а не оператор% для целочисленного модуля)
if (fmod(sqrt(16), 1) == 0) {
// is an integer
}
Если вы используете PHP 5.2.0 или более позднюю версию, я считаю, что это также сработает, но я не использовал его в таких обстоятельствах, чтобы быть уверенным:
$result = sqrt(16);
if (filter_var($result, FILTER_VALIDATE_INT)) {
// is an integer
}