Autor Tópico: Truncar valores no firebird  (Lida 520 vezes)

Thyago Brasil

  • Expert
  • *****
  • Mensagens: 884
  • Crê no Senhor Jesus e será salvo tu e tua família
    • www.brasdesign.com.br
    • Email
Truncar valores no firebird
« Online: Outubro 19, 2015, 08:09:26 am »
Pessoal, estou com um problema. Preciso usar uma função que trunque o valor em uma procedure Firebird.

Por ex:

Tenho o valor 12,589. Gostaria que esse valor tornasse 12,58 e não 12,59 (Valor arredondado).

Alguma sugestão?
Thyago Brasil
Desenvolvedor Web
Site: http://www.brasdesign.com.br

SC 5.02/SC 8.1

Alexandre Pereira Bühler

  • Expert
  • *****
  • Mensagens: 1635
  • Nunca estabeleça um teto para os seus rendimentos.
    • Simão & Bühler Ltda
    • Email
Re:Truncar valores no firebird
« Responder #1 Online: Março 16, 2016, 12:50:06 am »
Thyago,
Você já deve ter achado a solução mas vai a reposta para o pessoal que tiver a mesma dúvida.
Supondo que já esteja conectado na sua database pode fazer o teste:
SQL> select 15 / cast(7 as double precision) from rdb$database;

                 DIVIDE
=======================
      2.142857142857143

Para arredondar com round: http://www.firebirdsql.org/refdocs/langrefupd25-intfunc-round.html

SQL> select round(15 / cast(7 as double precision),3) from rdb$database;

                  ROUND
=======================
      2.143000000000000

Observação o tipo de arredondamento  feito por round é o usado no Brasil e segue  a Norma ABNT NBR 5891.

Para truncar use trunc: http://www.firebirdsql.org/refdocs/langrefupd25-intfunc-trunc.html

SQL> select trunc(15 / cast(7 as double precision),3) from rdb$database;

                  TRUNC
=======================
      2.142000000000000

Observação o truncamento pode e conterá mais erros nas contas finais que o arredondamento.

Observação final: Testado no firebird 2.5.5.
--
Alexandre Pereira Bühler
https://www.simaoebuhler.com.br
Hospedagem compartilhada Scriptcase desenvolvimento e produção. Temos servidores dedicados Scriptcase.
Eu RTFM todo dia e você?