> O PostgreSQL tem uma resolução alta interna para o tipo numeric.
> Provavelmente o valor foi resultado de um cálculo que gerou os decimais
> que você está vendo.
>
> Recomendo que, na sua aplicação ou nas consultas que está fazendo,
> arredonde os valores no momento da operação de INSERT ou UPDATE.
>
> Para consertar os valores atuais, o pessoal da lista já indicou funções
> de arredondamento pra você ajeitar num UPDATE.
>

Fazendo o UPDATE tudo funciona normalmente.

Fiz novamente um teste.

INSERT INTO nova_tabela( VALOR ) VALUES
(355.5500000000000113686837721616029739379882812500000).

Depois:

SELECT * FROM nova_tabela
WHERE valor  = 355.55

Agora existem 3 registros. Dois foram "consertados" pelo UPDATE. Este
último UPDATE que fiz manualmente o PostgreSQL truncou o valor corretamente.

Ou seja, porque o valor é inserido "ao pé da letra" quando é aplicação que
manda e porque ele trunca quando faço o INSERT pelo pgAdmin?

O PostgreSQL não faz distinção da aplicação cliente, ele trata todos da
mesma maneira. Pra mim ainda está confuso.
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a