Значения разбиты на участки, как вставить в первый, 3-го десятичного знака?


у Меня есть решение, которое разделяет участков и включает в себя стоимость остаток от деления на первый взнос, как можно проверить даже работает phpFiddle

, Но у меня возникают проблемы, когда значения имеют плавающей точкой, как, например 190.75 уже использую функцию number_format, чтобы сделать преобразование денежной.

способ, который работает, если сумма целое число, но не хотел, чтобы это было, как я сделал, на самом деле хотел, что бы это было так.

$valor_total = 200.75;
$qt_parcelas = 3;
$valor_parcelas = $valor_total / $qt_parcelas;

echo 'o valor de cada parcela eh: '.$valor_parcelas; //cada parcela seria 66.916666..
// mas queria que ficasse assim
// parcela 1: 66.93
// parcela 2: 66.91
// parcela 3: 66.91

Есть ли способ сделать это в php? получить значения после 2 десятичной дроби и сложить со значением первой?

 1
php
Author: WMomesso, 2017-05-10

2 answers

И В последнем случае, вы всегда можете работать с центов:

<?php
$valor_total = 200.75;
$qtde_parcelas = 3;
function parcelas($montante, $parcelas) {
    $resultado = array();
    $centavos = $montante * 100; // montante em centavos

    // a primeira parcela recebe o resto;
    // divide tudo por 100 para achar o valor em reais
    array_push($resultado,(floor($centavos / $parcelas) + $centavos % $parcelas) / 100.0 );
    for ($i = 1; $i < $parcelas; $i ++) {
        // as outras são arredondadas para baixo somente
        array_push($resultado, floor($centavos / $parcelas)  / 100.0 );
    }

    return $resultado;
}
print_r(parcelas($valor_total, $qtde_parcelas));
?>
 2
Author: Wtrmute, 2017-05-10 16:34:34

Вы можете использовать round() например, round($valor_parcelas);

,

round($valor_parcelas, 2, PHP_ROUND_HALF_ODD);

 1
Author: Diéfani Favareto Piovezan, 2017-05-10 16:32:53