Я пытаюсь написать 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);
Вы пытаетесь получить коллекцию чисел, которые составляют в целом $? Если так, я не думаю, что ваш основной алгоритм правильный. Рассмотрим 7/3. До двух знаков после запятой это 2,33. Ваш код будет производить массив из 2,33, 2,33 и 2,32, которые вместе составляют 6,98, а не 7.