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

Carlos H. Cantu listas em warmboot.com.br
Terça Novembro 9 16:07:33 -03 2021


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




Mais detalhes sobre a lista de discussão lista