看下这个输出echo $money - ($yuanprice *  $discount );PHP的浮点数运算比较特殊,可以这样判断 if ( ($orderingid == $yuanorderingid) && abs($money - ($yuanprice *  $discount )<0.0001) ) {
}

解决方案 »

  1.   

    因为你的 $yuanprice、$discount 是小数
    所以运算时采用的浮点运算
    但是浮点运算会丢失精度,所以造成 $money 不等于 ($yuanprice *  $discount )
    不过 php 提供了高精度数学运算函数
    if ( ($orderingid == $yuanorderingid) && $money == bcmul($yuanprice, $discount, 2) ) {
    就会输出 1 了
      

  2.   

    直接用bcMath库吧
    if(($orderingid == $yuanorderingid) && $money == bcmul($yuanprice, $discount,2)){
      

  3.   

    我建议做一下 类型转换, 浮点类型的数字结果比较比较特殊,  那就建议把浮点类型的计算结果 转化成 字符型;
    if ( ($orderingid == $yuanorderingid) && $money == (string)($yuanprice *  $discount ) ) {
               echo "1";
    }else {
                echo "22";
    }
      

  4.   

    printf('%f', ($yuanprice *  $discount )); // 0.090000
    所以與$money不同。改成這樣就可以了。$yuanorderingid="118894";
    $discount="0.9";
    $orderingid="118894";
    $money="0.09";
    $yuanprice="0.1";
    echo "discount:".$discount."-orderingid:".$orderingid ."-yuanorderingid:".$yuanorderingid."-money:".$money."<br>" ;
    printf('%f', ($yuanprice *  $discount ));
    echo '<br>';
    if ( ($orderingid == $yuanorderingid) && $money == round(($yuanprice *  $discount ),2) ) {
    echo "1";
    }else {
    echo "22";
    }