Evandro Ricardo Silvestre escreveu:
> Salve!
>
> CREATE TABLE estoque_teste (
>    co_item           float8 NOT NULL,
>    co_estoque        float8 NOT NULL,
>    qt_estoque        float8 NOT NULL,
>    PRIMARY KEY(co_item));
>
> INSERT INTO estoque_teste(co_item,co_estoque,qt_estoque) VALUES(1,1,150.5)
> UPDATE estoque_teste SET qt_estoque = qt_estoque - 150.4;
>
> SELECT * FROM estoque_teste
>
> O valor do campo qt_estoque, ao invés de ser 0.01 ficou 0,0999999999999943.
>
> Se o UPDATE for dessa maneira: UPDATE estoque_teste SET qt_estoque =
> qt_estoque::numeric - 150.4;
>
> O valor do campo fica correto, mas o CAST para numeric não é a forma 
> correta de solucionar o problema.
> Imagino que seja algum problema de arredondamento e não sei se é 
> possível definir a forma como o Postgresql arredonda.
>
>
> Não gostaria de mudar o tipo de dados da tabela, ela já esta alimentada 
> e é muito grande!
>
> Fiz o teste nas versões 7.4.2 e 8.2. Em nenhum deu certo!
>
>
> Se alguém souber de algo ficarei grato
>
> Evandro
> _______________________________________________
> Grupo de Usuários do PostgreSQL no Brasil
> Antes de perguntar consulte o manual
> http://pgdocptbr.sourceforge.net/
>
> Para editar suas opções ou sair da lista acesse a página da lista em:
> http://pgfoundry.org/mailman/listinfo/brasil-usuarios
>
>   
Quando se necessita de valores exatos em tipos flutuantes o ideal mesmo 
é trabalahr com numeric pois os outros podem variar quando a precisao é 
maior.
Creio que voce necessite mudar o tipo de dados para numeric a posterior, 
mas por enquanto utilize uma funcao de arredondamento como |round|(v 
numeric, s int)
em http://www.postgresql.org/docs/8.2/interactive/functions-math.html


-- 
Ivo Nascimento
Iann tech - Desenvolvendo soluções com performance e segurança
http://www.ianntech.com.br

_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios

Responder a