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
