[firebase-br] Double Precision, Numeric e valor 0
Cyber Guido
cyberguido em gmail.com
Seg Out 28 18:43:24 -03 2013
O tipo "double precision" é ponto flutuante, e se presta apenas onde a
precisão absoluta não se faz necessária. Se você vai medir a distância
entre a Terra e Lua, o que são alguns metros para e para cá? Ou, se você
vai medir a distância entre os fundos e a frente da sua casa, o que são
alguns centímetros para lá ou para cá?
Para usar um exemplo dado por um colega há muitos anos em uma outra
lista de firebird, quantos números existem entre 0 e 1? Infinitos,
certo? 0,1 0,11 0,111 0,234456789 e por aí afora. Para estoque, valore
monetários, e campos similares onde sabemos de antemão a precisão
requerida, usa-se numeric ou decimal.
Este artigo ilustra os problemas inerentes à comparação de números ponto
flutuantes:
http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
Cordialmente,
Carlos
On 28/10/2013 15:40, Gugui wrote:
> Olá pessoal, me deparei com 1 select filtrando campo Estoque <> 0
> e ele listou o q estava com 0,000000 !
>
> para manipular o estoque do produto é usado somente soma e subtração,
> nada de divisão
> para ter resto além das 6 casas q me é mostrado no Flamerobin !
> verifiquei a soma de todas as entradas e todas as saidas, o valor da 0 !
>
> o campo Estoque é double precision e o select filtra corretamente se
> eu converto o Estoque
> para numeric(12,2)!
>
> o q pode estar ocorrendo ?
>
> uso Debian 7
> firebird2.5-superclassic 2.5.2~svn+54698.ds4-3 amd64
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> .
>
Mais detalhes sobre a lista de discussão lista