[firebase-br] Double precision não tá gravando como deveria.

Sandro Souza escovadordebits em gmail.com
Qua Fev 26 16:54:26 -03 2020


Bom dia/tarde/noite Gladiston.

As 15 casas de precisão do Double Precision não são apenas para as casas
decimais, mas sim para todos os dígitos, ou seja, o seu UPDATE informou um
número com 17 dígitos (2 inteiros + 15 decimais), sendo assim, serão
utilizados apenas os primeiros 15 dígitos (2 inteiros + 13 decimais = 15
dígitos).
Por isso você obteve esse resultado.
Nesse caso, aconselho-te a criar uma base de dados no dialeto 3, e a usar
os tipos DECIMAL ou NUMERIC, pois internamente serão tratados como valores
inteiros para garantir o máximo de precisão possível.
O tipo DECIMAL(18,15) te permitiria uma precisão real de 3 dígitos inteiros
e 15 dígitos decimais (internamente armazenados como um BIGINT de forma
transparente).
Faça o teste.
Espero ter ajudado mais que atrapalhado. :D

Em qua., 26 de fev. de 2020 às 15:13, Gladiston Santana <
gladiston em vidy.com.br> escreveu:

> Olá a todos, gostaria de saber se alguém aí já passou por isso.
> Eu faço esse update
> UPDATE CV SET
>   perc_lucro=42.503064336972848
> WHERE (id_cv=57528)
>
> Contudo, ao resgatar o valor, ao inves de
> 42.503064336972848
> obtenho:
> 42,5030643369728
> Após a atualização.
> O tipo de perc_lucro é double precision e deveria conter todas as casas
> decimais (<15), contudo os ultimos dois numeros simplesmente somem.
> Por que?
>
> FB 3.0.5 32bits.
> ______________________________________________
> 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://www.firebase.com.br/pesquisa_lista.html
>



Mais detalhes sobre a lista de discussão lista