dúvida sobre campo do tipo double precision
11/02/2005
0
olá pessoal,
no banco firebird da empresa q trabalho está aparecendo em alguns campos do tipo double precision o seguinte valor =7,105427357601E-15
e eu comecei a pesquisar dentro do banco e vi q isso acontece quando um trigger ou procedure efetua uma subtracao no banco por exemplo:
existe uma trigger q ao deletar compras de uma tabela ela subtrai o valor dessa compra em um registro em outra tabela, só q se tiver por exemplo quatro compras uma com 1 real e outras tres com 0,01 centavo e eu deletar primeiro 1 real e depois os centavos o valor do registro q sofreu a subtracao fica 7,105427357601E-15, mas se eu deletar primeiro os tres 0,01 centavo e depois 1 real o registro fica =0 q é o correto.
alguem pode me explicar oq acontece?
será algum problema com esse tipo de campo double precision?
no banco firebird da empresa q trabalho está aparecendo em alguns campos do tipo double precision o seguinte valor =7,105427357601E-15
e eu comecei a pesquisar dentro do banco e vi q isso acontece quando um trigger ou procedure efetua uma subtracao no banco por exemplo:
existe uma trigger q ao deletar compras de uma tabela ela subtrai o valor dessa compra em um registro em outra tabela, só q se tiver por exemplo quatro compras uma com 1 real e outras tres com 0,01 centavo e eu deletar primeiro 1 real e depois os centavos o valor do registro q sofreu a subtracao fica 7,105427357601E-15, mas se eu deletar primeiro os tres 0,01 centavo e depois 1 real o registro fica =0 q é o correto.
alguem pode me explicar oq acontece?
será algum problema com esse tipo de campo double precision?
Tap_pedroso
Curtir tópico
+ 0
Responder
Posts
11/02/2005
Afarias
sim, campos DOUBLE PRECISION não são bons para cálculos q exigem precisão (se vc notar, o valor observado é *MUITO* próximo de ZERO -- 7,1 * 10^-15)
para ter cálculos precisos, use NUMERIC (que internamente usará tipos inteiros para manter o valor, o q tornará os cálculos precisos)
T+
para ter cálculos precisos, use NUMERIC (que internamente usará tipos inteiros para manter o valor, o q tornará os cálculos precisos)
T+
Responder
Clique aqui para fazer login e interagir na Comunidade :)