开发者

How to determine whether a variable is a decimal and it is less than 0.01 in PHP?

开发者 https://www.devze.com 2022-12-17 22:38 出处:网络
H开发者_开发知识库ow to determine whether a variable is a decimal and it is less than 0.01 in PHP?

H开发者_开发知识库ow to determine whether a variable is a decimal and it is less than 0.01 in PHP? If I write

if($balance<0.01)

Will a

true

value be returned if

$balance

is not a decimal at all?


use if( is_numeric($balance) && $balance < 0.01 )

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


The value of $balance will be typecasted to whatever is needed for the comparison. In your case, any integer will do, e.g. a $balance of 1, 1.1 or '1' will all evaluate to false, regardless of their initial type. Consequently 0 < 0.1 will evaluate to true, because it will not check the type.

See the PHP manual on Comparison Operators, type juggling and the type comparison table. Also, See these functions for checking types

  • is_int() to find whether the type of a variable is integer
  • is_float() to find whether the type of a variable is float/decimal

Example:

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

Out of curiosity, wouldn't it be easier to just check for if(!($balance > 0))?


Use the is_real() function:

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


To answer your question, which was a straight forward yes/no: it depends.

If it's any type of number, like float, double or integer then php will perform as expected. Even if it's a string that php can interpret as a number, that'll work. If it's any other string like just $balance = "whatever", then this will return true so you would do a type checking if you expect this, in the fashion suggested by the other answers.

See the manual for more examples on what different operands produce.


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

精彩评论

暂无评论...
验证码 换一张
取 消