我正在尝试编写一些PHP,它将对一个数字进行除法,如果奇数,则最后一个结果将被四舍五入。因此允许奇数成比例。
例如:
5/3等于1.666重复出现。该代码将生成一个1.67、1.67和1.66的数组。
6/2等于2。该代码将生成一个由2、2、2组成的数组。
我设法想出了这个:
$total = 7;
$divide = 3;
$array = array_fill(0, $total, round($total/$divide, 2));
if($total%$divide == 1) $array[count($array)-1] = $array[count($array)-1]-0.01;
我想知道是否有更合乎逻辑的方法?
感谢
我认为您的数组应该有$divide
数量的元素。
所以6/2就是3和3。我更改了与余数相关的if
语句。我只是到了最后一个元素。
function calculate($total, $divide) {
$array = array_fill(0, $divide, round($total/$divide, 2));
if($total%$divide > 0) {
$array[count($array)-1] += $total - array_sum($array);
}
return $array;
}
$result = calculate(5, 3);
print_r($result);
您是否试图获得一组加起来为$total的数字?如果是这样的话,我认为你的基本算法是不对的。考虑7/3。小数点后两位为2.33。您的代码将生成一个由2.33、2.33和2.32组成的数组,它们的总和为6.98,而不是7。