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

Reply via email to