錯誤記錄



原先:
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 
 


 

 

 

 

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