2010-01-26 2 views
1

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

if($balance<0.01) 

Будет возвращено истинное значение

если

$ Баланс

- это не десятичная цифра?

+0

, пожалуйста, уточните использование * десятичного *. Вы хотите проверить, является ли $ balance любым числом, например. -1, 0, 1.1, 13e7 и т. Д.? Или вы хотите проверить конкретный * тип * номера, например. float, целые числа. – Gordon

+0

Является ли '$ balance' предполагаемой денежной стоимостью? Вы почти наверняка не хотите использовать поплавки для этого. Проверьте расширение bcmath: http://php.net/manual/en/book.bc.php –

ответ

2

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

См. PHP manual on Comparison Operators, type juggling и type comparison table. Кроме того, см эти функции для проверки типов

  • is_int() найти тип переменной, является ли число
  • is_float() найти тип переменной, является ли поплавковый/десятичное

Пример:

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

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

if(is_real($balance) && $balance<0.01) 
{ 
    ... 
} 
0

попробовать 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

, но что, если это значение int: 0, не должно совпадать? – Ben

+0

Я пропустил этот, может быть, мы можем просто поставить еще один критерий, и если $ balance <> 0 –

0

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

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

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