【问题标题】:How to determine whether a variable is a decimal and it is less than 0.01 in PHP?PHP如何判断一个变量是否为小数且小于0.01?
【发布时间】:2010-01-26 10:57:30
【问题描述】:

PHP中如何判断变量是否为小数且小于0.01? 如果我写

if($balance<0.01)

会不会

是的

如果

返回值

$余额

根本不是小数?

【问题讨论】:

  • 请明确您对十进制的使用。你想检查 $balance 是否是任何数字,例如-1、0、1.1、13e7 等?或者您是否要检查特定的 type 数字,例如浮点数,整数。
  • $balance 应该是货币价值吗?你几乎肯定不想为此使用浮点数。查看 bcmath 扩展:php.net/manual/en/book.bc.php

标签: php algorithm boolean decimal


【解决方案1】:

使用 if( is_numeric($balance) && $balance

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

【讨论】:

    【解决方案2】:

    $balance 的值将被转换为比较所需的任何值。在您的情况下,任何整数都可以,例如11.1'1' 的 $balance 都将评估为 false,无论它们的初始类型如何。因此0 &lt; 0.1 将评估为true,因为它不会检查类型。

    请参阅PHP manual on Comparison Operatorstype jugglingtype 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 &gt; 0)) 不是更容易吗?

    【讨论】:

      【解决方案3】:

      使用 is_real() 函数:

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

      【讨论】:

        【解决方案4】:

        回答您的问题,这是直接是/否:这取决于。

        如果它是任何类型的数字,如浮点数、双精度数或整数,那么 php 将按预期执行。即使它是 php 可以解释为数字的字符串,也可以。如果它是任何其他字符串,例如 $balance = "whatever",那么这将返回 true,因此您可以按照其他答案建议的方式进行类型检查。

        有关不同操作数产生的更多示例,请参阅the manual

        【讨论】:

          【解决方案5】:

          试试 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

          【讨论】:

          • 但是如果它是一个int值怎么办:0,不应该匹配吗?
          • 我错过了那个,也许我们可以换个标准,如果 $balance0
          猜你喜欢
          • 1970-01-01
          • 2011-12-11
          • 1970-01-01
          • 2011-08-17
          • 1970-01-01
          • 2021-07-25
          • 1970-01-01
          • 1970-01-01
          • 2016-04-20
          相关资源
          最近更新 更多