Как определить, является ли переменная десятичной и меньше 0,01 в PHP? Если я напишу
if($balance<0.01)
Будет ли
правда
значение возвращается, если
$ баланс
не является десятичной?
использовать if (is_numeric ($ balance) && $ balance <0.01)
Величина $balance
будет указана на все, что необходимо для сравнения. В вашем случае любое целое будет делать, например, баланс $ 1
, 1.1
или '1'
будет оцениваться как false
, независимо от их начального типа. Следовательно, 0 < 0.1
будет оцениваться как true
, поскольку оно не будет проверять тип.
См. Руководство по PHP о операторах сравнения , тип жонглирования и таблицу сравнения типов . Кроме того, см. Эти функции для проверки типов
is_int()
чтобы is_int()
является ли тип переменной целым is_float()
чтобы is_float()
является ли тип переменной float / decimal Пример:
var_dump(is_int(1)); // true var_dump(is_int(1.0)); // false var_dump(is_int(1.1)); // false var_dump(is_int('1')); // false var_dump(is_float(1)); // false var_dump(is_float(1.0)); // true var_dump(is_float(1.1)); // true var_dump(is_float('1')); // false
Из любопытства, было бы проще просто проверить, if(!($balance > 0))
?
Используйте функцию is_real ():
if(is_real($balance) && $balance<0.01) { ... }
Чтобы ответить на ваш вопрос, который был прямым, да / нет: это зависит.
Если это любой тип числа, например float, double или integer, то php будет выполнять, как ожидалось. Даже если это строка, которую php может интерпретировать как число, это сработает. Если это какая-то другая строка, например, просто $ balance = "whatever", тогда это вернет true, поэтому вы проверите проверку типа, если вы ожидаете этого, в моде, предложенном другими ответами.
См. Руководство для получения дополнительных примеров того, как производятся разные операнды.
try is_float ()
<?php $balance=2.75; if(is_float($val) && $balance<0.01) { echo "is decimaland less than 0.01 \n"; }else { echo "is not decimal and greater than 0.01 \n"; }