错误记录



原先:
if ($redpacket['haspwd'] &&  $pwd != $redpacket['pwd']) {
     
    $openCount = Redis::incrMemberRedpacketOpencount($this->userid, $id);
    $leftCount = 10 - $openCount;

    if ($leftCount > 0) {
            $this->returnError(300, '口令错误,还剩' . $leftCount . "次机会");
    } else {
            $this->returnError(300, '口令错误');
    }
}

修正后
if ($redpacket['haspwd']) {
    if (Redis::getMemberRedpacketOpencount($this->userid, $id) >= 10) {
        $this->returnError(300, '打开次数已超过限制');
    }

    if ($pwd != $redpacket['pwd']) {
        $openCount = Redis::incrMemberRedpacketOpencount($this->userid, $id);
        $leftCount = 10 - $openCount;

        if ($leftCount > 0) {
            $this->returnError(300, '口令错误,还剩' . $leftCount . "次机会");
        } else {
            $this->returnError(300, '口令错误');
        }
    }
}

原先会造成 10次后 输入正确密码也能进入下面逻辑

 

php 在 两数相减的结果可能会有多位小数,

可以采用下面处理:

$money = floatval(number_format(($amount - $paybalance), 2, '.', ''));

 

二位数想减一定是二位数吗?

php 中:  2.01-2 = 0.0099999999999998 

2.21-2.2=0.0099999999999998

肉眼看来相减是0.01 并且小数点第二位是1  相减得出的是0.00999999


2.2-2.1=0.1
2.02-2=0.02

$price=69.1;
$count=100;
$total=$price*$count-6910;
echo $total;


$int = 0.58;
var_dump(intval($int * 100));
输出的是0.57

在浮点数里面 0.58是被视为.57999999999999999999999……9999无限接近0.58 
 


 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章