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

Carlos H. Cantu listas em warmboot.com.br
Segunda Novembro 15 09:43:51 -03 2021


A atualização do IBExpert lançada ontem resolveu o problema.

[]s
Carlos H. Cantu
eBook Guia de Migração para o FB 4 - www.firebase.com.br/guiafb4.php
www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br

G> SET SQL DIALECT 3;
G> Este é o único dialeto que uso.
G> Será que o processo de conversão no IBExpert pode vir a usar outro dialeto
G> diferente ?
G> Estes são os resultados usando o isql (arquivo anexo)

G> Em ter., 9 de nov. de 2021 às 16:07, Carlos H. Cantu via lista <
G> lista em firebase.com.br> escreveu:

>> Deve estar com dialeto 1, aí numeric (18,13) é armazenado internamente
>> com double precision (que garante precisão de 15 dígitos) e não como
>> bigint!
>>
>> No dialeto 3 não tem "sujeira".
>>
>> []s
>> Carlos H. Cantu
>> eBook Guia de Migração para o FB 4 - www.firebase.com.br/guiafb4.php
>> www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br
>>
>> PGvl> Boa tarde,
>>
>> PGvl> Firebird 2.5
>> PGvl> ===
>> PGvl> SELECT '123456,123' ORIGINAL,
>> PGvl> CAST('123456.123' AS NUMERIC(18,13)) CONVERTIDO
>> PGvl> FROM RDB$DATABASE;
>> PGvl> ===
>> PGvl> ISQL
>> PGvl> ORIGINAL    CONVERTIDO
>> PGvl> ==========  =====================
>> PGvl> 123456,123  123456.1230000000000
>>
>> PGvl> =================================
>> PGvl> IBEXPERT
>> PGvl> ORIGINAL    CONVERTIDO
>> PGvl> 123456,123  123456,1230000000210
>> PGvl> =================================
>>
>> PGvl> No IBExpert observamos o resíduo (0000000210),
>> PGvl> fez o CAST usando Float.
>>
>> PGvl> =======
>> PGvl> Float
>> PGvl> https://www.h-schmidt.net/FloatConverter/IEEE754.html
>> PGvl>     0,3=0,300000011920928955078125
>> PGvl> 0,1+0,2=0,300000004470348358154296
>> PGvl> 0,1+0,2=0,3 FALSE
>> PGvl> =======
>> PGvl> --
>> PGvl> Paulo Geloramo
>>
>> PGvl> Em sex., 5 de nov. de 2021 às 21:17, GutembergAdv via lista
>> PGvl> <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
>>
>> PGvl> ______________________________________________
>> PGvl> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> PGvl> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> PGvl> http://www.firebase.com.br/fb/artigo.php?id=1107
>> PGvl> Para consultar mensagens antigas:
>> PGvl> http://www.firebase.com.br/pesquisa_lista.html
>>
>>
>> ______________________________________________
>> 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