[firebase-br] Conversão cast com alteração de valor

Gladiston Santana gladiston em vidy.com.br
Terça Novembro 9 01:14:38 -03 2021


Na realidade a discussão é sobre precisão, o numeric se comporta como um
ponto flutuante com casas fixas, ele não tem precisão, a precisão é a
capacidade do número de se manter íntegro e isso é transparente para nós,
mas bem difícil e consome muitos recursos da CPU, foi uma tese muito longa
que tive no passado e daí minha explicação longa respondendo ao colega
porque isso acontece.
Nem que a vaca touça, misturando tipos numéricos diferentes e usando
numeric(x,y)  irá manter precisão, só irá deformá-lo ainda mais.
Para fins didáticos, mexendo com o numeric tudo que irá obter será um
numero de casas fixas no final da operação, mas se analisar com cuidado as
operações aritméticas acumuladas durante a soma notará imprecisão, algo
desprezível para a maioria de nós, mas intolerado em certas operações.
O colega quer precisão, e não será possível com o cast para string ou mesmo
numeric(x,y) da forma como apontei.
Eu não falei o tipo que ele deveria usar porque espero que ele busque qual
o tipo mais adequado quando é desejável manter precisão numérica.

[]´s
ps:  Para você não teve problema com o numeric->cast que apresentou o mesmo
número, mas para ele teve - é exatamente o problema que tentei explicar - a
imprecisão se dá dentro do processador e pode variar conforme o ambiente.
Mas também pode ser o ibexpert, há uma opção nas configurações dele para
mascarar valores e muita gente desconhece o parâmetro e ele mostra zeros
onde não há zeros.


Em sáb., 6 de nov. de 2021 às 06:46, Carlos H. Cantu via lista <
lista em firebase.com.br> escreveu:

> O cast que ele fez é para numeric, portanto, o resultado não é ponto
> flutuante e sim ponto fixo. Não há perda de precisão na conversão.
>
>


Mais detalhes sobre a lista de discussão lista