Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde pessoal, estou criando um script que gera vencimentos de determinada venda.
Uma venda de 209.80 em 3 parcelas, por exemplo, gera 3 vencimentos de 69.93.
69.93 multiplicado por 3 resulta em 209.79 e não 209.80.
Para corrigir essa diferença, antes de inserir os dados no banco de dados eu pego a soma total dos vencimentos (69.93 + 69.93 + 69.93) e comparo com o valor total da venda (209.80) para verificar a diferença.
No entanto, ao somar os vencimentos, o valor retornado da soma é 209.80 e não 209.79.
O que devo fazer para corrigir isso?
Grato pela atenção.
Shrek-BH, obrigado pela resposta. Consegui resolver o problema. Grande abraço!
>
O Problema é que ao dividir por 3 está gerando uma dizima períodica. No seu caso 69,9333333333333333333. Porém você está mostrando somente 2 casas decimais, mas na variavel está guardado tudo. Quando você multiplica 69,933333333333333x3 = 209,80.
Você pode fazer isto para resolver:
$total = 209.80;
$parcelas = 3;
$vl_parcelas = round($total/3,2);
$tt_parcelas = $vl_parcelas*3;
$diferenca = round($total-$tt_parcelas,2);
if ($diferenca==0)
echo 'O valor do parcelamento é: '.$parcelas.'x'.$vl_parcelas;
else
echo 'O valor do parcelamento é: '.($parcelas-1).'x'.$vl_parcelas.' + 1 de '.($vl_parcelas+$diferenca);
Shrek-BH, obrigado pela resposta. Consegui resolver o problema. Grande abraço!
>
O Problema é que ao dividir por 3 está gerando uma dizima períodica. No seu caso 69,9333333333333333333. Porém você está mostrando somente 2 casas decimais, mas na variavel está guardado tudo. Quando você multiplica 69,933333333333333x3 = 209,80.
Você pode fazer isto para resolver:
$total = 209.80;
$parcelas = 3;
$vl_parcelas = round($total/3,2);
$tt_parcelas = $vl_parcelas*3;
$diferenca = round($total-$tt_parcelas,2);
if ($diferenca==0)
echo 'O valor do parcelamento é: '.$parcelas.'x'.$vl_parcelas;
else
echo 'O valor do parcelamento é: '.($parcelas-1).'x'.$vl_parcelas.' + 1 de '.($vl_parcelas+$diferenca);
O Problema é que ao dividir por 3 está gerando uma dizima períodica. No seu caso 69,9333333333333333333. Porém você está mostrando somente 2 casas decimais, mas na variavel está guardado tudo. Quando você multiplica 69,933333333333333x3 = 209,80.
Você pode fazer isto para resolver: