普通(等额)红包算法规则

现在QQ发普通红包(等额红包)的算法都是填的多少个红包和多少个包。今天我想说的是整数发的红包如果除不尽的话应该怎么发(例如100元发3个)。这种情况必然会除不尽,所以写了一个算法。


public static function normal($num,$money){
    $permoney = round($money/$num,2);

    $arr = [];
    for($i=0;$i<$num;$i++){
        $arr[$i] = $permoney;
    }
    $total = array_sum($arr);
    $a = round(($total-$money),2);


    $nums = abs(intval($a*100));
    if($a>0){
        for($i=0;$i<$nums;$i++){
            $arr[$i] = $arr[$i]-0.01;
        }
    }else{
        for($i=0;$i<$nums;$i++){
            $arr[$i] = $arr[$i]+0.01;
        }
    }

    return $arr;
}


你可能感兴趣的:(php笔记)