【问题标题】:PHP check if number decimal is larger than .3 [duplicate]PHP检查数字十进制是否大于.3 [重复]
【发布时间】:2018-08-20 13:40:04
【问题描述】:

我使用以下方法来确定一个值是否有小数。例如$val = 3.3;

if (is_numeric( $val ) && floor( $val ) != $val) {
    return true;
}

如何检查该值的小数是否等于 0.3 或更大?

【问题讨论】:

  • 5 个拥有 1000+ 代表的用户是否可以尝试搜索重复而不是回答?
  • 编程将一个较大的问题分解为较小的步骤,您可以单独解决这些步骤。一旦有了数字的小数部分,将该小数部分与所需数字进行比较就很简单了。这几乎就像把两个和两个放在一起一样容易。阅读How to Ask 并展示您的研究。

标签: php numbers int numeric


【解决方案1】:

你可以用$val减去floor($val)得到$val的十进制值。例如:

if( $val - floor($val) >= 0.3  ) {
     return true;
}

请注意,如果$val 为负数,它将不起作用,您可以使用abs 使其起作用:

if( abs($val) - floor(abs($val)) >= 0.3 ) {}

或者类似的东西:

// if the negative number should be greater than 0.3
if( $val - floor($val) >= 0.3 && abs($val) - floor(abs($val)) >= 0.3  ) {}
// if the negative number should be less than 0.3
if( $val - floor($val) >= 0.3 && abs($val) - floor(abs($val)) <= 0.3 ) {}

【讨论】:

    【解决方案2】:

    写这个:

    function fractionalPartOfDoubleVal($doub){
        // $doub = +1.4;
        // $whole = floor($doub);
        if ($doub > 0){     
            $whole = floor($doub);     
        } else {
            $whole = ceil($doub);     
        }
    
        $fractionalPart = $doub - $whole;
        if  ($fractionalPart > 0.3){
         // further processing
        }
    
        return abs($fractionalPart);
    }
    
    $posFractionalPart = fractionalPartOfDoubleVal(2.7);
    echo ($posFractionalPart);
    $negFractionalPart = fractionalPartOfDoubleVal(-2.7);
    echo ($negFractionalPart);
    

    【讨论】:

    • 小心 OP:等于 .3 或更大意味着 >=
    • 添加了指向允许负数的stackoverflow答案的链接
    【解决方案3】:

    您可以获取浮点数的整数部分,然后从原始值中减去:

    $value = 3.3;
    $integer = floor($value); // 3
    $decimal = $value - $integer; //0.3
    if($decimal >= 0.3){ //true
        //your stuff
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-22
      • 2023-03-19
      • 1970-01-01
      • 2016-11-02
      • 2012-07-20
      相关资源
      最近更新 更多