代码之家  ›  专栏  ›  技术社区  ›  Mike Q

将数字与公差进行比较

php
  •  2
  • Mike Q  · 技术社区  · 7 年前

    这可能是个愚蠢的问题,但有没有更聪明的方法来验证这一点

    <?php
    $w = 1360;
    $h = 455;
    
    $cw = 1360;
    $ch = 460;
    
    $tol = 10; //px
    if ((int) $w >= (int) ($cw-$tol) && (int) $w <= (int) ($cw+$tol) &&
        (int) $h >= (int) ($ch-$tol) && (int) $h <= (int) ($ch+$tol)) {
    
        echo "you are within the tolerance {$cw}x{$ch}px by +-{$tol} px.";
    };
    

    所以我基本上只是想确保用户在上传时不会超出这些界限。上面的代码有效,只是想知道我是否可以更聪明一些。该方法在传入这些值时已经知道这些值。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Michael Berkowski    7 年前

    更简洁的方法是将输入值与参考值相减,并确保绝对值( abs() )的结果小于或等于您的容忍度。

    abs() 去掉了它的标志,所以它是一个简单的 <= 与公差值进行比较。

    $w = 1360;
    $h = 455;
    
    $cw = 1360;
    $ch = 460;
    
    $tol = 10; //px
    
    if (abs($cw - $w) <= $tol && abs($ch - $h) <= $tol) {
      echo "you are within the tolerance {$cw}x{$ch}px by +-{$tol} px.";
    } 
    

    (int) 在这里通常没有必要。但是,如果您的函数可能正在接收字符串值,我建议在计算之前将变量转换为int,以减少混乱。