математика — PHP пропорциональное деление

Я пытаюсь написать 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;

Мне интересно, есть ли более логичный способ сделать это?

Спасибо

0

Решение

Я думаю, что ваш массив должен иметь $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);
1

Другие решения

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

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector