Em 8 de fevereiro de 2013 15:22, Paulo <pa...@visualpsistemas.com.br> escreveu: > Ola Pessoal, > > Como posso forçar um arredondamento para unidade superior, > Por Ex: > > SELECT ROUND(115.00/12,2); Retorno: 9.58, > > Se multiplicar por 12 * 9.58 = 114,96 > > Preciso forçar retorno 9.59 * 12 = 115,08 > > Alguma ideia ?
Você diz que precisa "forçar o retorno", então creio que na real você precise considerar mais casas decimais em seus cálculos, então vou considerar que voce quer levar em consideração até a terceira casa após à vŕigula logo você precisa i) carregar o ponto flutuante no seu cálculo (ou seja, não arredonde antes) ou ii) somar 0.004 e arredondar depois Eu vou optar pela opção ii: postgres=# select round((115.00/12) + 0.004,2); round ------- 9.59 postgres=# select round(9.58333333333333 + 0.004,2); round ------- 9.59 postgres=# select round(9.5891 + 0.004,2); round ------- 9.59 postgres=# select round((115.00/12) + 0.005,2) * 12; ?column? ---------- 115.08 Já que você está considerando apenas 2 (duas) casas após à vírgula o uso do 0.004 torna-se desprezível para a operação como um todo, mas não para o round. Em outras palavras você vai "forçar" ele arredondar sempre que você tiver, no mínimo, 0.001, já que este, somado aos 0.004 chega aos 0.005 que arrendondado vai para 0.01. Se não for isso o que você precisa, eu não entendi sua pergunta. []s -- Dickson S. Guedes mail/xmpp: gue...@guedesoft.net - skype: guediz http://github.com/guedes - http://guedesoft.net http://www.postgresql.org.br _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral