[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