Как определить, является ли переменная десятичной и она меньше 0,01 в PHP? - PullRequest
1 голос
/ 26 января 2010

Как определить, является ли переменная десятичной и она меньше 0,01 в PHP? Если я напишу

if($balance<0.01)

Будет

правда

значение будет возвращено, если

$ Баланс

не является десятичным числом вообще?

Ответы [ 5 ]

4 голосов
/ 26 января 2010

использование if (is_numeric ($ balance) && $ balance <0.01) </p>

http://php.net/manual/de/function.is-numeric.php

2 голосов
/ 26 января 2010

Значение $balance будет приведено к тому, что необходимо для сравнения. В вашем случае подойдет любое целое число, например баланс $ 1002 *, 1.1 или '1' будет равен false независимо от их начального типа. Следовательно, 0 < 0.1 будет оцениваться как true, потому что он не будет проверять тип.

См. Руководство PHP по операторам сравнения , жонглирование типов и таблицу сравнения типов . Также см. Эти функции для проверки типов

  • is_int(), чтобы определить, является ли тип переменной целым числом
  • 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))?

0 голосов
/ 26 января 2010

Чтобы ответить на ваш вопрос, который был прямым да / нет: это зависит.

Если это какой-либо тип числа, например, число с плавающей запятой, двойное или целое число, то php будет работать так, как ожидается. Даже если это строка, которую php может интерпретировать как число, это сработает. Если это какая-либо другая строка, например просто $ balance = "what", то она вернет true, поэтому вы должны выполнить проверку типа, если ожидаете этого, в порядке, предложенном другими ответами.

См. руководство для получения дополнительных примеров того, что производят различные операнды.

0 голосов
/ 26 января 2010

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";
}

http://www.php.net/manual/en/function.is-float.php

0 голосов
/ 26 января 2010

Используйте функцию is_real ():

if(is_real($balance) && $balance<0.01)
{
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...