Tenho na origem um NUMBER 19,2 e através de um INSERT AS SELECT feito nessa origem tenho o destino uma coluna NUMBER 24,7 porém quando roda o INSERT se o valor inteiro for um número muito grande está 'zuando' a parte fracionária do número. Constatei que através de INSERT "puro" o comportamento também ocorre.
Tentei usar o tipo BINARY_DOUBLE mas vi que ele omite as casas decimais quando não há valor, esse tipo é recomendado em quais situações ?
Segue exemplo...
create table alberi ( valor_number number( 24,7 ), valor_binary binary_double );
insert into alberi values (2662468067.8900000, 2662468067.8900000);
insert into alberi values ( 2468067.8900000, 2468067.8900000);
insert into alberi values (2662468067.9900000, 2662468067.9900000);
insert into alberi values (3123798559.4000000, 3123798559.4000000);
insert into alberi values (2662468067.8944444, 2662468067.8944444);
insert into alberi values (2662468067.8955555, 2662468067.8955555);
insert into alberi values (2662468067.8966666, 2662468067.8966666);
select * from alberi;
drop table alberi;
Imagino que o problema seja de exibição, se eu aplico um TO_CHAR com máscara eu consigo recuperar o número conforme foi inserido.
Porém no código fonte durante execução está acontecendo o problema também.... eu tenho uma subtração que deveria dar zero e que por conta desse problema não está ficando 0 pois um valor está como 3123798559,4000001 e o outro 3123798559,4099999 e dai ferra meu cálculo... esses dois números são somatórios de fontes distintas... mas teriam que zerar ao fazer a subtração.
Obrigado.