Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Hamon

Aredondar centavos

Recommended Posts

Olá, pessoal, estou fazendo meu TCC, e os meu amigos dizem que a conta que estou fazendo é errada. Só que já refiz, já procurei em uma calculadora online que calcula porcentagens e bate na mesma.

 

Enfim, aqui está o meu codigo e o resultado:

<?php



//CASO HOUVER ERROS OU NÃO FOR ESSA A SAIDA, OQ IMPORTA É A CONTA, PQ FIZ O WHILE SÓ PARA EXEMPLIFICAR O MEU PROCESSO, OQ VALE É O CAUCULO

//Esses valores aqui nas varaveis vem direto do banco de dados, esses aqui só são exemplos. (Campo Decimal no Banco de dados)



$preco_com_juros= 10.00;
$juro_porcenagem= 2.00;

$i=0;

while(5 > 0){
$preco_com_juros_para_db= $preco_com_juros + ($preco_com_juros * $juro_porcentagem / 100)

echo $preco_com_juros_para_db;
$i++;
}


?>

O resultado seria isso:

 

10.20

10.404

10.61208

10.824321600000001

11.040808032000001

 

Só que na conta de meus amigos que me explicaram como fazer a conta estava dando mais ou menos isso:

 

 

10.20

10.40

10.60

10.80

11.00

 

Pelo que eu vi o calculo no PHP não está arredondando estes valores (O campo usado no banco deados para armazenar esses valores finais são DECIMAL 7,2) Além disso são para guardar valor monetarios.

 

Como faço para arredondar esses números e deixar que nem no exemplo de de baixo(como da a conta dos meus amigos)? E se puderem me dizer se está errado esses primeiros valores que passei, ou está certo, ou qual seria o valor mais certo de se usar (qual dos dois passados).

Compartilhar este post


Link para o post
Compartilhar em outros sites

round = arredonda seguindo as regras da matemática (funciona igual o number_format);

ceil = arredonda para baixo

floor = arredonda para cima

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesse caso qual eu deveria usar?

 

Testei todos, testei somente com um caculo.

 

Calculo normal, que nem postei acima: 10.2

Calculo com round: 10

Calculo com ceil: 11

Calculo com floor: 10

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu vou saber... quem definiu as regras de negócio do seu sistema foi você, eu não faço a mínima ideia do que o sistema faz (ou se propõe a fazer), você apenas mostrou que os seus colegas arrendondaram tudo para baixo, inclusive ignorando regras de arredondamento que a gente aprende nas séries iniciais...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo depende do que você está se propondo a fazer, se o seu sistema vai ter casas decimais "ilimitadas" não precisa arredondar, agora se nas regras de negócio você definiu que vai usar o padrão de moeda corrente "usual", ai vai precisar arredondar, já que com exceção da cotação do dólar e dos combustíveis, todo o resto usa apenas 2 casas para centavos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, eu vou usar somente 2 casas para o centavos, assim sendo não precisarei arredondar?

Olha só, eu posso estar errado, mas no número que você apresentou:

11.040808032000001

 

Tem mais do que 2 casas nos centavos... acredito que alguém que esteja no TCC também consiga ter esse mesmo insight... logo, você vai precisar reduzir essa quantidade de alguma maneira, seja arredondo da forma correta, ou da forma que lhe foi passado pelos seus amigos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tem algo errado no arredondamento abaixo?

 

10.824321600000001 => 10.80

 

Não deveria ser 10.82?

 

Há anos atrás, quando conversei com uma contadora, ela me explicou que todos os valores (no caso de cobranças) são arredondados para baixo (que conhecemos como truncate), ou seja, sua fração 0.004 (10.824321600000001) deve ser ignorada. Isso é por uma questão jurídica, a empresa não pode cobrar a mais (lesar) o cliente, nem que sejam míseros 0.006 centavos (diferença entre 10.824 e 10.83).

 

Agora, o arredondamento de valores, deve ser executado apenas no valor final repassado e não nos valores utilizados durante o cálculo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ESerra, desculpa coloquei o numero inteiro, mas no banco de dados ele cai como 11.04.

 

Gabriel, ok, entendo seu ponto de vista e acho cetissimo, MAS como que eu faço pra arredondar tão pouco assim? E eu não entendi

 

 

10.824321600000001 => 10.80

Não deveria ser 10.82?

 

Pro banco de dados ele vai com o valor de 10.82

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual parte do meu "ponto de vista" está se referindo. Lembrando que, em nenhum momento, eu coloquei meu ponto de vista, apenas um parecer técnico sobre arredondamento em cobranças e o questionamento sobre os exemplos apresentados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.