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

Paulo Geloramo assisinformatica em gmail.com
Terça Novembro 9 14:45:39 -03 2021


Boa tarde,

Firebird 2.5
===
SELECT '123456,123' ORIGINAL,
CAST('123456.123' AS NUMERIC(18,13)) CONVERTIDO
FROM RDB$DATABASE;
===
ISQL
ORIGINAL    CONVERTIDO
==========  =====================
123456,123  123456.1230000000000

=================================
IBEXPERT
ORIGINAL    CONVERTIDO
123456,123  123456,1230000000210
=================================

No IBExpert observamos o resíduo (0000000210),
fez o CAST usando Float.

=======
Float
https://www.h-schmidt.net/FloatConverter/IEEE754.html
    0,3=0,300000011920928955078125
0,1+0,2=0,300000004470348358154296
0,1+0,2=0,3 FALSE
=======
--
Paulo Geloramo

Em sex., 5 de nov. de 2021 às 21:17, GutembergAdv via lista
<lista em firebase.com.br> escreveu:
>
> /* Alguém sabe me dizer porque este cast gera dígitos significativos no
> final do número? */
> /* Neste caso foi o valor 3. Também preciso saber como evitar isso. É
> necessário ter exatidão no valor */
> /* Firebird 3 */
>
> select
>  '1485.45' VlrOriginal,
>  cast('1485.45' as numeric(18,13)) VlrConvertido
> from rdb$database
> ______________________________________________
> 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