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

Responder a