dúvida sobre campo do tipo double precision
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
Curtidas 0
Respostas
Afarias
11/02/2005
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+
GOSTEI 0